Правильное использование is_product_category()

20 июн. 2018 г., 14:16:47
Просмотры: 19.8K
Голосов: 1

У меня есть две категории товаров:

  1. МНОГОЯЗЫЧНЫЙ ЦИФРОВОЙ МАРКЕТИНГ (ID 75)
  2. МЕЖДУНАРОДНЫЕ КАНАЛЫ ПРОДАЖ (ID 107)

Я хочу выполнить определенный код через условие 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() ) { // начинаем только если есть товары

            // НАЧАЛО стандартного цикла woocommerce

            woocommerce_product_loop_start();

            if ( wc_get_loop_prop( 'total' ) ) {

                while ( $products->have_posts() ) : $products->the_post();

                    /**
                     * Хук: woocommerce_shop_loop.
                     *
                     * @hooked WC_Structured_Data::generate_product_data() - 10
                     */
                    do_action( 'woocommerce_shop_loop' );

                    wc_get_template_part( 'content', 'product' );

                endwhile; // конец цикла.

            }

            woocommerce_product_loop_end();

            // КОНЕЦ стандартного цикла woocommerce

            // Восстанавливаем оригинальные данные поста, возможно не нужно здесь (в плагине может быть необходимо)
            wp_reset_postdata();

        }
0
Все ответы на вопрос 3
0

is_product_category() следует использовать только на архивных страницах категорий WooCommerce, поэтому сначала убедитесь, что вы находитесь на архивной странице категории.

вместо номера категории используйте её слаг (slug) is_product_category('category-slug')

нет необходимости использовать условие ИЛИ(||), просто используйте is_product_category('category-slug1','category-slug2') для получения того же результата

20 июн. 2018 г. 14:46:31
0

Попробуйте:

if( is_product_category( 'category1-slug' ) || is_product_category( 'category2-slug' ) ) {
   //...
}
20 июн. 2018 г. 14:42:31
0

Для нескольких категорий следует использовать слаги в массиве при использовании функции is_product_category(). Пример ниже. Проверено и работает.

if( is_product_category( array('category1-slug', 'category2-slug' )) )
10 мар. 2020 г. 17:10:14