• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Не работает "Тип Отображения"

Image CMS

zaharbaz

Новичок
#1
С какого-то перепуга не работает Тип отображения, который отвечает за вывод: категории/товары/и то и другое
Какой бы вариант я не выбрал, не важно в настройках вукомерса или в самой категории, всегда отображаются товары.

Подскажите, в чем может быть причина? конфликт в functions? Может кто сталкивался, я уже голову сломал
p.s. кэш чистил
 
Последнее редактирование:

zaharbaz

Новичок
#2
Кажется причина вот в этом коде:
PHP:
// Show empty category
function woocommerce_product_subcategories( $args = array() ) {
    global $woocommerce, $wp_query, $_chosen_attributes;
    $defaults = array(
        'before'  => '',
        'after'  => '',
        'force_display' => false
    );
    $args = wp_parse_args( $args, $defaults );
    extract( $args );
    // Main query only
    if ( ! is_main_query() && ! $force_display ) return;
    // Don't show when filtering
    if ( sizeof( $_chosen_attributes ) > 0 || ( isset( $_GET['max_price'] ) && isset( $_GET['min_price'] ) ) ) return;
    // Don't show when searching or when on page > 1 and ensure we're on a product archive
    if ( is_search() || is_paged() || ( ! is_product_category() && ! is_shop() ) ) return;
    // Check cateogries are enabled
    if ( is_product_category() && get_option( 'woocommerce_show_subcategories' ) == 'no' ) return;
    if ( is_shop() && get_option( 'woocommerce_shop_show_subcategories' ) == 'no' ) return;
    // Find the category + category parent, if applicable
    if ( $product_cat_slug = get_query_var( 'product_cat' ) ) {
        $product_cat = get_term_by( 'slug', $product_cat_slug, 'product_cat' );
        $product_category_parent = $product_cat->term_id;
    } else {
        $product_category_parent = 0;
    }
    // NOTE: using child_of instead of parent - this is not ideal but due to a WP bug ( http://core.trac.wordpress.org/ticket/15626 ) pad_counts won't work
    $args = array(
        'child_of'      => $product_category_parent,
        'menu_order'    => 'ASC',
        'hide_empty'    => 0,
        'hierarchical'  => 1,
        'taxonomy'      => 'product_cat',
        'pad_counts'    => 1
    );
    $product_categories = get_categories( $args  );
    $product_category_found = false;
    if ( $product_categories ) {
        foreach ( $product_categories as $category ) {
            if ( $category->parent != $product_category_parent )
                continue;
            if ( ! $product_category_found ) {
                // We found a category
                $product_category_found = true;
                echo $before;
            }
            woocommerce_get_template( 'content-product_cat.php', array(
                'category' => $category
            ) );
        }
    }
    // If we are hiding products disable the loop and pagination
    if ( $product_category_found == true && get_option( 'woocommerce_hide_products_when_showing_subcategories' ) == 'yes' ) {
        $wp_query->post_count = 0;
        $wp_query->max_num_pages = 0;
    }
    if ( $product_category_found ) {
        echo $after;
        return true;
    }
}

Он отображает пустые категории. Но вместе и с ними отображает все товары из дочерних категорий.
Как можно было бы видоизменить этот код, чтобы он отображал только пустые категории, а товары не трогал?
 

zaharbaz

Новичок
#3
Вопрос решен. Код показывающий пустые категории заменен на этот:
PHP:
add_filter( 'woocommerce_product_subcategories_hide_empty', 'show_empty_categories', 10, 1 );
function show_empty_categories ( $show_empty ) {
$show_empty = true;
// You can add other logic here too
return $show_empty;
}


Можно закрывать
 
Сверху Снизу