web-dev-qa-db-ja.com

Meta_queryを使用して複数のカスタムフィールドを検索する

カスタム投稿タイプの検索結果リストを作成しようとしていますが、実行している問題は、 'meta_query'パラメータが渡された値をまとめて文字列にする方法にあります。それぞれの 'meta_query'値を 'OR'ではなく 'AND'として扱っているようです。これが私が使っているコードです:

$strsearch = 'lorem';
$args = array(
    'post_type' => 'products',
    'meta_query' => array(
        array('key' => '_product_make','compare' => 'LIKE','value' => $strsearch),
        array('key' => '_product_model','compare' => 'LIKE','value' => $strsearch)
        )
    ,'s' => $strsearch);
$resource_query = new WP_Query($args);

個々のフィールドを個別に検索すると、目的の結果が得られます。これらを一緒に使用すると、検索している文字列が、以下にリストされている3つのフィールドのうちの1つにしか出現しない可能性があるため、見つかりません。渡された各フィールド比較を 'meta_query'で 'OR'として扱う方法はありますか?

4
hereswhatidid

はい、WP 3.2以降、 'relation'引数を設定できます。

'meta_query' => array(
    'relation' => 'OR',
    array('key' => '_product_make','compare' => 'LIKE','value' => $strsearch),
    array('key' => '_product_model','compare' => 'LIKE','value' => $strsearch)
)

http://core.trac.wordpress.org/ticket/17011 を参照してください。

7
scribu