ループをフィルタリングして、特定のmeta_key
を持つmeta_value
を持つ投稿を見つけようとしています。私はコーデックスを見ました、そして、私は運なしで以下を試みました:
// No results
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
'relation' => 'OR',
array(
'meta_key' => 'priority',
/* Tried this too
'meta_value' => '80',
'compare' => '='
*/
'meta_value' => array('80'),
'compare' => 'IN' )
)
);
// No results
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_key' => 'priority',
'meta_value' => 80
);
// This list me all cqpp_interventions and I can confirm that I have some with meta_value set to 80
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_key' => 'priority'
);
$cqpp_posts = get_posts( $args );
ループ内で検証する方法は次のとおりです。
$priority = get_post_meta( get_the_ID(), 'priority');
echo '<pre>';
var_dump($priority);
echo '</pre>';
その結果、
search.php:16:
array (size=1)
0 =>
array (size=1)
0 => string '80' (length=2)
search.php:16:
array (size=1)
0 =>
array (size=2)
0 => string '80' (length=2)
1 => string '91' (length=2)
これを修正するために私は何ができますか?
あなたはこれを試すことができます:
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
array(
'key' => 'priority',
'value' => '80'
)
)
);
あなたのクエリの本当の問題はあなたがmeta_key
とmeta_value
を渡しているからです。しかし、meta_query
引数の配列は、代わりにキーkey
とvalue
を持つべきです。
これも動作します:
'key' => 'priority',
'value' => array('80')
あなたの最初の$ argsの参照から
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
'relation' => 'OR',
array(
'meta_key' => 'priority',
/* Tried this too
'meta_value' => '80',
'compare' => '='
*/
'meta_value' => array('80'),
'compare' => 'IN' )
)
);
'relation' => 'OR'
を追加しましたが、これは必要ありません。照会するメタ値が複数ある場合はrelation
を追加する必要があります。デフォルトでは=
が使用されているので、特定の値が必要な場合もcompareは必要ありません。
更新された$ argsは次のようになります。
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
array(
'meta_key' => 'priority',
'meta_value' => '80', // since 80 is string
)
)
);
// try either of below.
$myPost = new WP_Query( $args ); // fetch post and managed in objects
$myPost = get_posts( $args ); // fetch post and store in array
これが助けになることを願っています。
ありがとう