私は2つの製品カテゴリがあります
これら2つのカテゴリに対してのみif条件でコードを実行したいと思います。
私はこのコードを使ってみましたが、うまくいきませんでした
if( is_product_category(107 || 75) ) {
$term = get_queried_object();
$parent = $term->parent;
if (!empty($parent)) {
$child_of = $parent;
} else {
$child_of = $term->term_id;
}
$terms = get_terms( array(
'taxonomy' => 'product_cat',
'child_of' => $child_of,
) );
if ($terms) {
foreach ( $terms as $category ) {
$category_id = $category->term_id;
$category_slug = $category->slug;
$category_name = $category->name;
$category_desc = $category->description;
echo '<div class="'.$category_slug.'">';
echo '<h2>'.$category_name.'</h2>';
if ($category_desc) {
echo '<p>'.$category_desc.'</p>';
}
$products_args = array(
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $category_id,
),
),
);
$products = new WP_Query( $products_args );
if ( $products->have_posts() ) { // only start if we hace some products
// START some normal woocommerce loop
woocommerce_product_loop_start();
if ( wc_get_loop_prop( 'total' ) ) {
while ( $products->have_posts() ) : $products->the_post();
/**
* Hook: woocommerce_shop_loop.
*
* @hooked WC_Structured_Data::generate_product_data() - 10
*/
do_action( 'woocommerce_shop_loop' );
wc_get_template_part( 'content', 'product' );
endwhile; // end of the loop.
}
woocommerce_product_loop_end();
// END the normal woocommerce loop
// Restore original post data, maybe not needed here (in a plugin it might be necessary)
wp_reset_postdata();
}
is_product_category()
は、woocommerceのカテゴリアーカイブページでのみ使用されるため、最初にカテゴリアーカイブにアクセスしていることを確認してください。
カテゴリ番号の代わりにカテゴリスラッグ名is_product_category('category-slug')
を使用
同じ出力を得るためにis_product_category('category-slug1','category-slug2')
を使うだけでOR(||)条件を実行する必要はありません
試してください:
if( is_product_category( 'category1-slug' ) || is_product_category( 'category2-slug' ) ) {
//...
}