-1

検索がpostmetaテーブルでもキーワードを検索するように、wordpressで検索をカスタマイズする必要があります。wp_query 変数には meta_query 変数を入れました。wp_query オブジェクトのクエリの出力は次のとおりです。

SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  INNER JOIN wp_postmeta ON        (wp_posts.ID = wp_postmeta.post_id)

INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id) INNER JOIN wp_postmeta AS mt2 ON (wp_posts.ID = mt2.post_id) WHERE 1=1 AND wp_posts.post_parent = 0 AND (((wp_posts.post_title LIKE '% 4422%') OR (wp_posts.post_content LIKE '%4422%'))) AND wp_posts.post_type = 'wpsc-product' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND ( (wp_postmeta .meta_key = 'CAS #' AND CAST(wp_postmeta.meta_value AS CHAR) LIKE '%4422%') OR (mt1.meta_key = 'style' AND CAST(mt1.meta_value AS CHAR) LIKE '%4422%') OR ( mt2.meta_key = 'Packaging' AND CAST(mt2.meta_value AS CHAR) LIKE '%4422%') ) GROUP BY wp_posts.ID ORDER BY wp_posts.post_title ASC LIMIT 0, 75

問題は、post と postmeta テーブルの両方を参照していることです。そのため、キーワードが post_content または post_title になく、meta フィールドにない場合、何も表示されません。

post_content、post_title、および meta フィールドの任意の場所を調べるためにこれが必要なので、これらのいずれかで値が検出され、結果が表示されます。今それが表示されています

4

1 に答える 1

0

以下のコードを試してください:

wp_reset_query();
$args = array('ignore_sticky_posts' => 1,'meta_key'=> KEY_TO_SEARCH, 'meta_value'=>$search_value, 'post_type'=> 'post','orderby' => 'post_date','order' => 'DESC','post_status' => 'publish',  'posts_per_page' => $post_to_show);
 query_posts($args);
于 2012-06-26T18:58:23.280 に答える