約4つのカスタムフィールドの値に基づいて投稿を検索するためのカスタム検索フォームを作成したいと思います。これを達成するためにwp_queryを使用してみましたが、これまでのところ最大の問題は、カスタムフィールドでデータを検索しても結果が得られないことです。また、通常のWordPressの「キーワード」検索ボックスを削除して4つのコンボボックスだけを使用する方法もわかりません。
これが私のsearch.phpファイルからのコードです: http://pastie.org/private/jhgsmaolvjyswyhsfphlfa
そしてこれが私のsearchform.phpのコードです:pastie.org/private/o3hrtqajh8hbkiht1nyoba
これがフォームレイアウトのイメージです。 http://i.stack.imgur.com/N8ncg.png
ありがとう。
検索クエリを新しいWP Queryと組み合わせる必要があります。
それはあなたのsearch.php上で、このようなものになるでしょう
<?php
global $wp_query; // get the global object
$thesearch = get_search_query(); // get the string searched
// merge them with one or several meta_queries to meet your demand
$args = array_merge( $wp_query->query, array(
'meta_query' => array(
array(
'key' => 'field_to_seach',
'value' => $thesearch,
'compare' => 'IN'
)
)
));
query_posts( $args ); // alter the main query to include your custom parameters
?>
あなたはいつでも pre_get_posts
または posts_where
フックを使うことができます。
ここでは、検索結果から投稿を除外する pre_get_posts
の使用例を示します。 http://codex.wordpress .org/Plugin_API/Action_Reference/pre_get_posts#Exclude_Pages_from_Search_Results
別の冗長なSQLクエリを作成することはないので、これはより良い解決策です。