Поддержка WooCommerce Вывод категорий на странице бренда

  • Добрый день.
    Подскажите как можно вывести список категорий к которым относятся товары бренда на странице бренда.
    Есть плагин который выводит на странице категории все ее подкатегории:

    <?php
    function tutsplus_product_cats_css() {
     
        /* регистрируем стили */
        wp_register_style( 'tutsplus_product_cats_css', plugins_url( 'css/style.cat.css', __FILE__ ) );
         
        /* ставим в очередь */
        wp_enqueue_style( 'tutsplus_product_cats_css' );
         
    }
     
    add_action( 'wp_enqueue_scripts', 'tutsplus_product_cats_css' );
    
    function tutsplus_product_subcategories( $args = array() ) {
    
    $parentid = get_queried_object_id();
             
    $args = array(
        'parent' => $parentid
    );
     
    $terms = get_terms( 'product_cat', $args );
    if ( $terms ) {
        if ( ! preg_match('#/(attribute|brand|shop|page)#', $_SERVER['REQUEST_URI']) ) {
         if ( is_tax( array( 'product_cat', 'product_tag' ) ) && 0 === absint( get_query_var( 'paged' ) ) ) {    
        }
        echo '<ul class="product-cats" style="padding-left: 0px;">';
         
            foreach ( $terms as $term ) {
                             
                echo '<li class="category">';                 
                         
                    /*woocommerce_subcategory_thumbnail( $term );*/
                      
                    /*echo '<h2>';*/
                        echo '<a href="' .  esc_url( get_term_link( $term ) ) . '" class="' . $term->slug . '"style="text-decoration: none;color: #fff;font-weight: 100;" >';
                            echo $term->name;
                        echo '</a>';
                    /*echo '</h2>';*/
                                                                   
                echo '</li>';
                                                                         
     
        }
         
        echo '</ul>';
     
    }
    
      }    
        }
    
    add_action( 'woocommerce_archive_description', 'tutsplus_product_subcategories', 50 );

    Можно ли так же вывести категории в брендах?
    Бренды формируются модулем premmerce brand

    • Тема изменена 3 года, 2 месяца назад пользователем newjey.
Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Модератор Yuri

    (@yube)

    Есть плагин который выводит на странице категории все ее подкатегории:

    Вообще гвоздь не от той стенки.

    Можно ли так же вывести категории в брендах?

    По сети лет десять уже гуляет куча решений аналогичной задачи «вывести метки записей из рубрики«. Найдите наиболее понятное и поменяйте имена таксономий.

    И да, кроме вариаций на тему «SQL с кучей джойнов», гуляет и альтернативное решение «получаем все посты, а потом их метки». Оно выглядит проще, но годится только для случая крайне малого количества записей.

    Юрий, спасибо за совет. Пробую но не получается вывести. Взял за основу такой вывод меток в рубрике:

    <?php
    $post_ids = get_objects_in_term( get_query_var( 'cat' ), 'category' );
    if ( ! empty( $post_ids ) && ! is_wp_error( $post_ids ) ) {
    	$tags = wp_get_object_terms( $post_ids, 'post_tag' );
    	if ( ! empty( $tags ) && ! is_wp_error( $tags ) ) {
    ?>
        <ul>
        <?php foreach( $tags as $tag ) { ?>
          <li><a href="<?php echo get_term_link( $tag, 'post_tag' ); ?>"><?php echo $tag->name; ?></a></li>
        <?php } ?>
        </ul>
    	<?php } ?>
    <?php } ?>

    Но ничего не выводит(

    Модератор Yuri

    (@yube)

    Взял за основу такой вывод меток в рубрике:

    Ровно то, что я не рекомендовал 🙂

    Но ничего не выводит(

    Имена таксономий корректно заменили?
    Проверьте, что возвращают get_query_var и get_objects_in_term.

    Я прошу прощения за свое незнание программирования, подскажите как проверить что возвращают данные функции?

    Я так понимаю что достаточно просто получить все категории товаров в данной категории. Сделал немного проще:

    <?php
    $prod_cat_args = array(
      'taxonomy'     => 'product_cat', //woocommerce
      'orderby'      => 'name',
      'empty'        => 0
    );
    
    $terms = get_categories( $prod_cat_args );
    
    foreach ( $terms as $term ) {
    $term_link = get_term_link( $term );    
    $return .= '<a href="' . esc_url( $term_link ) . '">' . $term->name . '</a></li>';
    } 
    ?>

    Но тоже ничего не выводит.

    Получилось вывести список категорий таким образом:

    <?php if ( $cats = wc_get_product_category_list( get_the_ID() ) ): ?>
    	
                        <span class="posted_in"><?php echo __('Category', 'woocommerce') ?>: <?php echo $cats ?></span>
                    <?php endif ?>

    Но что-то выводит как-то не правильно.

    Он выводит только категории первого товара на странице.

    • Ответ изменён 3 года, 2 месяца назад пользователем newjey.
    $terms = get_terms( ['taxonomy' => 'product_cat'] );
    
    echo '<pre>'; print_r( $terms ); echo '</pre>';

    возвращает

    [term_id] => 18
                [name] => Uncategorized
                [slug] => ssilka-na-product
                [term_group] => 0
                [term_taxonomy_id] => 18
                [taxonomy] => product_cat
                [description] => text 
                [parent] => 17
                [count] => 368
                [filter] => raw
    • Ответ изменён 3 года, 2 месяца назад пользователем newjey.

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

    $terms = get_terms( ['taxonomy' => 'product_cat'] );
    foreach ( $terms as $term ) {
    $return .= '<a href="' . esc_url( 'slug' ) . '">' . $term->name . '</a></li>';
    }

    Но не выводит(

    Модератор Yuri

    (@yube)

    Но не выводит(

    Где в приведенном коде вывод?

    $return .= '<a href="' . esc_url( 'slug' ) . '">' . $term->name . '</a></li>';

    Пробовал
    echo $term;

    • Ответ изменён 3 года, 2 месяца назад пользователем newjey.
    echo '<ul class="product-cats" style="padding-left: 0px;">';
         
            foreach ( $terms as $term ) {
                             
                echo '<li class="category">';                 
                         
                    /*woocommerce_subcategory_thumbnail( $term );*/
                      
                    /*echo '<h2>';*/
                        echo '<a href="' .  esc_url( get_term_link( $term ) ) . '" class="' . $term->slug . '"style="text-decoration: none;color: #fff;font-weight: 100;" >';
                            echo $term->name;
                        echo '</a>';
                    /*echo '</h2>';*/
                                                                   
                echo '</li>';
                                                                         
     
        }
         
        echo '</ul>';

    так вывел

    Блин, все равно не то(( вывелись все имеющиеся категории. Не хватает я так понял проверки на данную категорию. Как ее можно сделать?

    Как получить только те категории к которым относятся товары в данной категории?)

    Подскажите, почему
    wc_get_product_category_list
    Выводит только категории первого товара, а не всех товаров данной категории (записи)?

    foreach((get_the_terms( $product->ID, 'product_cat' )) as $category) {
        echo '<pre>'; print_r( $category ); echo '</pre>';
    }

    Так же возвращает только массив первого товара.

Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Тема «Вывод категорий на странице бренда» закрыта для новых ответов.