これは wordpress データベースで、関心のある 2 つのテーブルがあります: posts と postmeta。私がやりたいことは、$term(ユーザーが検索したもの) を取得し、この変数を SQL 検索で使用することです。
一致する場合に検索するテーブルは、meta_value (meta_key が albumYear の場合)、post_content、および post_title です。
問題は、meta_value が他のテーブルとは異なるテーブルにあることですが、そのテーブル postmeta には、posts.ID と同じ ID である post_id があります。これにより、あるメタ値が何らかの投稿に属していることを知ることができます。
次のコードを試してみましたが、ここで人々から助けを得ることができるように、何が必要かを明確にしたことを願っています. これについて本当に助けが必要ですが、グーグルやここで答えが見つかりませんでした。前もって感謝します。
$query_sql = "
SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta
,
(SELECT *
FROM $wpdb->posts
WHERE NOT wpdb->posts.post_status = 'inherit'
AND (wpdb->posts.post_type = 'page' OR wpdb->posts.post_type = 'post')
AND (wpdb->posts.post_content LIKE '%".$term."%' OR wpdb->posts.post_name LIKE '%".$term."%' OR $wpdb->postmeta.meta_value LIKE '%".$term."%')
ORDER BY wpdb->posts.post_title ASC) x
WHERE $wpdb->postmeta.post_id = $wpdb->posts.ID AND $wpdb->postmeta.meta_key = 'albumYear'
";
$query_result = $wpdb->get_results($query_sql, OBJECT);
SQL 構造のサンプル:
1.wp_posts
1.1 ID, post_type, post_content, post_status, post_name, post_title etc
2.wp_postmeta
2.1 post_id, meta_key, meta_value
そのため、meta_value (meta_key が X の場合)、post_content、post_name などで $term の一致を検索する必要があります。また、Post im 検索を識別し、そのすべてのコンテンツを返す必要があります。