0

メタキー値に検索キーワードを持つ投稿も表示できるように、search.php をカスタマイズしようとしています。注意: メタ キーを使用する Advance カスタム フィールド プラグインを使用しています。

たとえば、「治療」というメタキーがあり、ユーザーが検索バーに「私の治療」と入力して検索ボタンを押すと、「私の治療」キーワードを含む投稿とその内容および/または 「治療」と呼ばれるそのメタキーの「私の治療

「アドレス」など、複数のメタキーを同時に操作したい。次のコードを書きましたが、検索が壊れるだけです。誰でも私が間違っていることを教えてください。

$args = array(
        'post_type'=> 'beauty_salon',
        's' =>$s,
        'meta_query' => array(
               array(
                  'key' => 'treatments',
                  'value' => $s,
                  'compare' => 'LIKE',
                ),
                array(
                  'key' => 'address',
                  'value' => $s,
                  'compare' => 'LIKE',
                ),
        ),
    );
    $query = new WP_Query( $args );

    // The Loop.......etc

注意: 短いカスタム コードが必要なので、プラグインを提案しないでください。私は同じことをする人がたくさんいることを知っています。

4

1 に答える 1

0

meta_query に「relation」オプションを使用してみてください。

また、実際の search.php テンプレートを使用して検索項目を表示している場合は、pre_get_posts フィッターを使用して検索クエリを「ハック」することをお勧めします。そのため、テンプレート ファイルの代わりにこのようなものを functions.php に記述します。 :

function search_filter($query) {
    if ( !is_admin() && $query->is_main_query() ) {
        if ($query->is_search) {
            $meta_args = array(
                'relation' => 'OR',
                array(
                    'key' => 'treatments',
                    'value' => $s,
                    'compare' => 'LIKE',
                ),
                array(
                    'key' => 'address',
                    'value' => $s,
                    'compare' => 'LIKE',
                ),
            );

            $query->set('post_type', 'beauty_salon');
            $query->set('meta_query', $meta_args);
        }
    }
}

add_action('pre_get_posts','search_filter');
于 2013-07-31T10:32:19.173 に答える