Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Как отобразит пустые категории в каталоге

Тема в разделе "Вопросы, советы и доработки.", создана пользователем alexvan, 24 мар 2015.

  1. alexvan

    alexvan

    Сообщения:
    18
    Симпатии:
    1
    Баллы:
    3
    Добрый день, создал все необходимые категории для каталога. Но зайдя в каталог ничего не увидел. После добавления первого товара - отобразились категории которые есть в цепочке по данному товару, и непосредственно категория в которой находится товар. Остальные категории не отображаються. Как сделать отображение пустых категорий (категорий в которых нет ни единого товара). Спасибо.
     
  2. alexvan

    alexvan

    Сообщения:
    18
    Симпатии:
    1
    Баллы:
    3
    Спасибо за совет. Если товара пока нет, а категория должна отображаться? Добавлять "выдуманный" не охота.
     
  3. RuslanTomaev

    RuslanTomaev

    Сообщения:
    50
    Симпатии:
    9
    Баллы:
    8
    Извините, не внимательно прочитал. Попробуйте это в functions.php:

    add_filter('woocommerce_product_categories_widget_args', 'woocommerce_show_empty_categories');
    function woocommerce_show_empty_categories($cat_args){
    $cat_args['hide_empty']=0;
    return $cat_args;
    }
     
  4. alexvan

    alexvan

    Сообщения:
    18
    Симпатии:
    1
    Баллы:
    3
    Спасибо за оперативный ответ, буду пробовать.
     
  5. alexvan

    alexvan

    Сообщения:
    18
    Симпатии:
    1
    Баллы:
    3
    В какой директории искать необходимый functions.php ? . Как я заметил их несколько.
     
  6. RuslanTomaev

    RuslanTomaev

    Сообщения:
    50
    Симпатии:
    9
    Баллы:
    8
    Идеальным вариантом было бы создание дочерней темы и в ней править functions.php
    Если как проще, то через админку Внешний вид - Редактор - functions.php
     
  7. alexvan

    alexvan

    Сообщения:
    18
    Симпатии:
    1
    Баллы:
    3
  8. RuslanTomaev

    RuslanTomaev

    Сообщения:
    50
    Симпатии:
    9
    Баллы:
    8
    https://gist.github.com/renegadesk/3926139 - рабочее решение, проверил сейчас на своем сайте.
     
    • Победитель Победитель x 1
  9. alexvan

    alexvan

    Сообщения:
    18
    Симпатии:
    1
    Баллы:
    3
    Заработало. Вставлять всю простыню? Или определенную часть. Буду признателен за перевод камментов в коде.
    Код:
    // Paste this in to your theme's functions file
    // Redefine sub category display to output empty categories
    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;
        }
    }
    У меня в корне каталога теперь главные категории вместе с товарами отображает.
     
  10. RuslanTomaev

    RuslanTomaev

    Сообщения:
    50
    Симпатии:
    9
    Баллы:
    8
    Есть решение более красивое отображает только родительские категории как пустые, так и заполненные

    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;
    }

    Если необходимо вывести дочерние категории, гуглите