web-dev-qa-db-ja.com

Is_product_category()を正しく使う

私は2つの製品カテゴリがあります

  1. 多言語デジタルマーケティング(ID 75)
  2. 国際販売チャネル(ID 107)

これら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();

        }
1
Nimesh Deo

is_product_category()は、woocommerceのカテゴリアーカイブページでのみ使用されるため、最初にカテゴリアーカイブにアクセスしていることを確認してください。

カテゴリ番号の代わりにカテゴリスラッグ名is_product_category('category-slug')を使用

同じ出力を得るためにis_product_category('category-slug1','category-slug2')を使うだけでOR(||)条件を実行する必要はありません

2
Kanon Chowdhury

試してください:

if( is_product_category( 'category1-slug' ) || is_product_category( 'category2-slug' ) ) {
   //...
}
0
Bogdan Dragomir