まず第一に、私はそれが重複していることを知っていますが、古い答えのどれも役に立ちませんでした。
私はpost_meta
を通して投稿を検索しています。これが私のコードです。現在は何も返されていません。
$args = array(
'numberposts' => -1,
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'system_power_supply',
'value' => array('single', 'redundant'),
'compare' => 'IN',
)
)
);
$query = new WP_Query($args);
echo $query->found_posts;
meta_query
を削除すればうまくいきます。私はこれらのことを確信しています:
key
またはvalue
にスペルミスはありません。post
ですメタクエリで直列化された値を検索する簡単な方法はありません。値の一覧が長くない場合は、潜在的に複数のメタクエリを設定することができます。
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'system_power_supply',
'value' => 'single',
'compare' => 'LIKE',
),
array(
'key' => 'system_power_supply',
'value' => 'redundant',
'compare' => 'LIKE',
)
)
もしあなたが素晴らしい空想を得たいのなら、あなたはそれを動的に設定することができます:
$values_to_search = array('single', 'redundant');
$meta_query = array('relation' => 'OR');
foreach ($values_to_search as $value) {
$meta_query[] = array(
'key' => 'system_power_supply',
'value' => $value,
'compare' => 'LIKE',
);
}
私はそれが長い時間であったことを知っています、しかし念のために誰かが同じ問題を抱えています。さて、問題が見つかるまで何時間も髪の毛を引っ張ってきました: 'IN'比較演算子を使った 'meta_query'は通常の配列を受け入れないようです。代わりに、最初に「、」で結合する必要があります。
だから、あなたの場合は、このようなものが動作するはずです:
$args = array(
'posts_per_page' => -1,
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'system_power_supply',
'value' => join(', ', array('single', 'redundant')),
'compare' => 'IN',
)
)
);
$query = new WP_Query($args);
echo $query->found_posts;