特定のカテゴリの製品を照会するために、Woocommerce製品にWP_Query
を使用しています。これは私のために働いた構文です-
$args = array(
'posts_per_page' => -1,
'product_cat' => 'category-slug-here',
'post_type' => 'product',
'orderby' => 'title',
);
$the_query = new WP_Query( $args );
// The Loop
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '' . get_the_title() . '<br /><br />';
}
wp_reset_postdata();
これはデータを返しますが、カテゴリのスラッグではなくIDを渡してフィルタリングし、複数のカテゴリに存在する製品を検索したいですonly。
引数product_cat
はWP_Query
にネイティブではないので(少なくとも私が見つけることができるので)、これはWoocommerceのカスタムなものだと思います。ドキュメントを通じて、カテゴリIDでフィルタリングできるものを見つけられず、このフィルタリングにAND条件を使用することもできませんでした。
cat
を使用すると、tax_query
およびcategory__and
の配列は結果を生成しませんでした。基本的に、カテゴリID 102と115の両方に存在するすべての製品を照会したいと思います。スラッグを使用する必要がある場合は、所有しているIDに基づいてその情報を取得する方法があると確信していますが、複数のカテゴリでフィルタリングする2つのクエリを回避したい。
誰もこれを達成する方法を知っていますか?
PDATE:product_cat
引数内のコンマでカテゴリスラッグを区切ると「OR」効果が得られるため、両方の異なる製品を組み合わせることがわかりましたが、これは私ではありません探している。したがって、たとえば:
'product_cat' => 'category-slug1, category-slug2'
合計で両方のカテゴリの製品が返されますが、私はまだ両方または複数のカテゴリにのみ属する別個の製品を見つける方法を探しています。
うわー、だから何時間も頭を叩いた後、これは私がこれを解決することができた方法です-
$args = array(
'posts_per_page' => -1,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'category-slug1'
),
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'category-slug2'
)
),
'post_type' => 'product',
'orderby' => 'title',
);
$the_query = new WP_Query( $args );
これは、tax_query
を含むrelation => 'AND'
引数を利用して、製品が両方のカテゴリに分類されるようにします。
これが将来誰かを助けることを願っています。
また、スラッグではなくIDを渡す方法もわかりませんでしたが(方法はあるはずですが)、IDに基づいてスラッグを取得する関数を次に示します。
$terms = get_term($YOURID, 'product_cat');
$theslug = $terms->slug;
Category_IDでクエリすることは、私にとってはうまくいったことです。
// First obtain term id:
//...
$all_categories = get_categories( $args );
$cat_ids = array();
foreach ($all_categories as $cat)
{
array_Push($cat_ids, $cat->term_id);
}
//Now use ids from array:
$args = array(
'posts_per_page' => -1,
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cat_ids
)
)
);
WordPress codex on WP_Query
カテゴリパラメータの場合 :
[〜#〜]または[〜#〜]と同等
$args = array( 'product_cat' => 'category-slug1,category-slug2' ) );
[〜#〜] and [〜#〜]と同等
$args = array( 'product_cat' => 'category-slug1+category-slug2' );
例えば.
$query = new WP_Query( $args );
「tax_query」配列の配列内で、クエリで実行される「演算子」を指定できます。 「AND」演算子を使用して、目的を達成できます。
$args = array(
'posts_per_page' => -1,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'category-slug1', 'category-slug2' )
'operator => 'AND',
),
),
'post_type' => 'product',
'orderby' => 'title',
);
$the_query = new WP_Query( $args );
このクエリで選択されたすべての製品は、指定された「用語」と一致します。詳細については、このリンクを参照してください: https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters
リンクが壊れた場合の関連情報は次のとおりです。
operator(string)-テストする演算子。可能な値は、「IN」、「NOT IN」、「AND」、「EXISTS」、および「NOT EXISTS」です。デフォルト値は「IN」です。