2016-05-02 1 views
2

私は2つのメタキーAとBをワードプレスの投稿用に使用しているとします。私はすべての投稿をA!= Bの値にWp_Queryを使って取得する必要があります。私は複数のキーを比較するためのコードしか見つけられず、次にAND/OR関係を行います。何か案は?おかげWp_Query:2つのメタキーを比較して投稿をフィルタリングする

$args = array(
       'post_type' => 'product', 
       'posts_per_page' => 100, 
       'paged' => $page 
      ) 

$data= new WP_Query($args); 
+0

どのメタキーから比較したいのですか –

+0

@PiyushDhanotiyaメタキー名はMetaKey1とMetaKey2です。これらは我々が製品に追加したカスタムフィールドです。 MetaKey1!= MetaKey2の価値があるすべての製品を入手する必要があります – sanjeev

+0

スクリプトロジックを並べ替えることができない場合は、カスタムMySQLクエリを作成する必要があります。 –

答えて

5

をこのようにしてみてください:

$args = array(
    'post_type' => 'product', 
    'meta_query' => array(
      'relation' => 'AND', 
      array(
        'key' => 'A', 
        'value' => '1', 
        'compare' => '='), 
      array(
        'key' => 'B', 
        'value' => '1', 
        'compare' => '!=') 
      ) 
); 
$data = new WP_Query($args); 
+0

これは、AとBの可能な値を知っている場合にのみ機能します。しかし、そうではありません。 AフィールドとBフィールドにどのような価値があるのか​​はわかりません。 – sanjeev

+0

私はWP_Queryでこれを行うために、それぞれの組み合わせに対して複数のクエリを書く必要がありました。あなたの答えが私を助けました。答えとしてマークする。 – sanjeev

0

あなたはこの方法で行くことができます。 ($、$ bのそれぞれ)の両方のあなたのメタキーの値を取得するなど、あなたの変数にそれらの値を格納し、その後、それらの値

if($a != $b) {$c = $a;} //If content of a is not of same as b $c contains meta value of a meta key 

今のクエリ部分が来るのチェックを持っています。

$args = array(
      'post_type' => 'product', 
      'posts_per_page' => 100, 
      'paged' => $page' 
      'meta_key'  => 'a', 
      'meta_value' => $c, 
     ) 

     $data= new WP_Query($args); 

あなたのために試してみてください。

注:a, b and cmeta keysvariablesは、あなたに合った結果を得るために、独自のmeta keymeta valuesを使用し、単なる例示の目的のためのものです。

関連する問題