更新:メタクエリオプションの助けを借りて正しい道を進んでいると思いますが、非常に非効率的であるために行き過ぎたかもしれません。更新されたコードはこの投稿の下部にあります。 。
技術的には3つの質問がありますが、それらは関連しており、最初の質問に回答する必要があるため、ここにすべて投稿してもかまいません。
これを少しコンテキストに入れるために、私は、各投稿の3つのメタフィールドにある3つのURLに追加できる種類のディレクトリに取り組んでいます。上記のURLを1〜3個追加した投稿のみのリストを表示したい。これをさらに面白くするために、アイテムが売り切れた場合に選択できる各メタフィールドに対応する3つのチェックボックスもあります。このリストから売り切れたアイテムも除外したいと思います。
質問1-すべて同じmeta_valueとキーを持つ(同じ値を持つものを除く)カスタム投稿タイプの投稿のリストを表示するにはどうすればよいですか
myPostType
内の'meta_value' => false
のすべてのmyMetaKey
投稿を返すリストを作成できました。以下のコードを参照してください:
<?php
$args = array(
'post_type' => 'myPostType',
'meta_key' => 'myMetaKey',
'meta_value' => false,
'orderby' => '_custom',
'order' => 'ASC',
'posts_per_page' => -1, );
$loop = new WP_Query($args);
while ($loop->have_posts() ) : $loop->the_post();
?>
doesがmyMetaKey
にmeta_value
を含む投稿を返すリストを作成することに興味があります。 meta_value
のfalse
をtrue
に変更するのと同じくらい簡単だと思いましたが、代わりに空のリストを返します。
解決済み:質問2-異なるmeta_key
'sの投稿を含むリストを返すにはどうすればよいですか?
myPostType
、myMetaKeyA
、およびmyMetaKeyB
の両方を含むmyMetaKeyC
からの投稿もリストに表示することに興味がありますが、meta_value
がtrueの場合(または上記の質問1)で求められたものと同等。
meta_query
クラスに誘導してくれたNielsに感謝します。複数の配列をmeta_query
に追加すると、うまくいきました。
質問3-対応するチェックボックスが選択されたmeta_key
を含む投稿を除外する方法
冒頭で述べたように、選択したチェックボックスを使用して投稿を除外することにも興味があります。
多くの問題を修正したと思いますが、私のコードは非常に非効率的であるため、実際には使い物になりません。
下にあるので、30分以上かかります。ロードする(30分後にタブを閉じたように)。これをより効率的に書き換える方法についてのポインタはありますか?
<?php
$args = array(
'post_type' => array('myPostType1', 'myPostType2'),
'orderby' => '_custom',
'order' => 'ASC',
'posts_per_page' => -1,
'meta_query' => array( 'relation' => 'OR',
array('relation' => 'AND',
array(
'key' => 'product1',
'value' => false,
'compare' => '!=',
),
array(
'key' => 'stock1',
'value' => '"soldOut1"',
'compare' => 'NOT LIKE',
)
),
array('relation' => 'AND',
array(
'key' => 'product2',
'value' => false,
'compare' => '!=',
),
array(
'key' => 'stock2',
'value' => '"soldOut2"',
'compare' => 'NOT LIKE',
)
),
array('relation' => 'AND',
array(
'key' => 'product3',
'value' => false,
'compare' => '!=',
),
array(
'key' => 'stock3',
'value' => '"soldOut3"',
'compare' => 'NOT LIKE',
)
)
)
);
$loop = new WP_Query($args);
while ($loop->have_posts() ) : $loop->the_post();
?>
現在のコードを考慮すると、あなたが望むことができるWP Meta Queryクラスを見逃したと思います。