web-dev-qa-db-ja.com

WordPressの検索にwp_queryを使用するにはどうすればよいですか?

約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

ありがとう。

1
3ph

検索クエリを新しい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

?>
2
moraleida

あなたはいつでも 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クエリを作成することはないので、これはより良い解決策です。

0