カスタムポストタイプの商品(ワイン)があります。以下はそれぞれカスタム分類法です。
ワインの単一商品ビューで、以下のクエリを実行します。
1)同じファミリー、同じサイズを持ちながら、異なるヴィンテージからのワインをすべて探す
2)同じ家族 ANDに属し、同じヴィンテージ ANDを持つすべてのワイン(投稿タイプ:商品)を検索し、異なるサイズを持つ。
今度の問題:数値年はヴィンテージ語のカスタム用語メタプロパティです。 数値ボトルサイズは、サイズ用語のカスタム用語メタプロパティです。
最初のクエリでは、次のことを試しました。
$other_years = get_posts(array(
'post_type' => 'product',
'numberposts' => -1,
'tax_query' => array(
array(
'taxonomy' => 'family',
'field' => 'id',
'terms' => $family->term_id, // Where term_id of Term 1 is "1".
'include_children' => false
),
array(
'taxonomy' => 'size',
'field' => 'id',
'terms' => $size->term_id, // Where term_id of Term 1 is "1".
'include_children' => false
),
array(
'taxonomy' => 'vintage',
'field' => 'id',
'terms' => array($vintage->term_id), // Where term_id of Term 1 is "1".
'include_children' => false,
'operator' => 'NOT IN'
),
)
));
それは動作します。しかし:term_idを比較する代わりに(ここではヴィンテージの用語ID)用語カスタムメタ値を比較したいのですが(year_numeric)は異なります。
そのようなクエリを実行する可能性はありますか?
1つのWP_Query内でそれを達成する方法はないので、最初に問題の年とは異なる年を持つterm_idのリストを取得する必要があります。
私は以下であなたがかなり接近すると思います。 (すぐにテストするための環境変数はありません)
$other_years_terms = get_terms(
'taxonomy' => 'vintage',
'meta_key' => 'year_numeric',
'meta_value' => $the_current_wine_year, // You'll have to figure that out
'meta_compare' => '!=',
'fields' => 'ids'
);
$other_years_posts = get_posts(array(
'post_type' => 'product',
'numberposts' => -1,
'tax_query' => array(
array(
'taxonomy' => 'family',
'field' => 'id',
'terms' => $family->term_id, // Where term_id of Term 1 is "1".
'include_children' => false
),
array(
'taxonomy' => 'size',
'field' => 'id',
'terms' => $size->term_id, // Where term_id of Term 1 is "1".
'include_children' => false
),
array(
'taxonomy' => 'vintage',
'field' => 'term_id',
'terms' => $other_years_terms,
),
)
));
メタキーが存在しない場合を確認していると思います。
この同様の質問を参照してください: メタキーが存在しないすべての投稿を問い合わせる