複数のカスタムフィールド値のWP 3.1 Meta_Query
-
22-10-2019 - |
質問
条件付きロジックを使用して、クエリのカスタムフィールドを比較しようとしていますが、少し立ち往生しています。リリースされたProjectとPermanderArtistのすべての投稿を「True」に設定するにはどうすればよいですか?
これが私がこれまでに持っているものです、私はそれが「比較」と関係があると思います:
ありがとう
OSU
編集: :私がやりたいことを明確にするために - 私は「False」に設定されている2つのカスタムフィールド値(この場合はPranderantistと永続主義者)を持つページを除外しようとしています。これらは、プラグインカスタムフィールドテンプレートを使用して生成されたチェックボックスを介して設定されます。
コードを更新して、これらの2つのカスタムフィールドをfalseに設定してすべてのページをフィルタリングする必要があることを説明しました。
global $post;
$artist_args = array(
'post_type' => 'page',
'post_parent' => $post->ID,
'posts_per_page' => -1,
'orderby' => 'name',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'ReleasedProject',
'value' => 'false'
),
array(
'key' => 'PermanentArtist',
'value' => 'false'
)
)
);
$my_query = new WP_Query($artist_args);
解決
すべての投稿が必要な場合 ReleasedProject
と PermanentArtist
どちらもtrueに設定されているので、変更する必要があります value
それらの両方のためのキー 'true'
. 。それらの両方が設定されているすべての投稿を除外したい場合 'false'
, 、追加する必要があります 'compare' => '!='
両方のメタクエリアレイに。
編集
メタクエリの背後にあるロジックは、すべての条件を満たす必要があるようなものです(それは AND
関係)。だからあなたが言うなら
'meta_query' => array(
array(
'key' => 'ReleasedProject',
'value' => 'false'
),
array(
'key' => 'PermanentArtist',
'value' => 'false'
)
)
つまり、「両方ともリリースされたすべての投稿を同一にリリースしたすべての投稿を見つける 'false'
と同一の永続的なアーティスト 'false'
。 "追加する場合 'compare' => '!='
前述したように、「両方ともリリースされたプロジェクトが同一ではないすべての投稿を見つける」と言っているでしょう。 'false'
と同一ではない常設のアーティスト 'false'
。 "プロジェクトセットをリリースした投稿がある場合 'false'
に設定された常設のアーティスト 'true'
, 、これらのクエリのどちらにも表示されません。
さらに、メタ値が欠落している場合、結果にも表示されません。したがって、リリースされたプロジェクトがTrueに設定された投稿があり、永続的なアーティストがまったく設定されていない場合、このメタクエリはその投稿を見つけられません。
'meta_query' => array(
array(
'key' => 'ReleasedProject',
'value' => 'false',
'compare' => '!='
),
array(
'key' => 'PermanentArtist',
'value' => 'false'
'compare' => '!='
)
)
基本的に、メタクエリは、複数のメタクエリがある場合、「/または「チェック」を実行しません/'の両方と'チェックも行います。