Поддержка Проблемы и решения Как вывести категории товаров в цикле wordpress?

  • Как вывести товары через цикл понятно:

    <?php $query = new WP_Query( 
        array( 'post_type' => 'product', 'posts_per_page' => 4) 
    );
              
            
              
    if( $query->have_posts())
         { while( $query->have_posts() ){ $query->the_post(); 
              
                ?>
       <?php the_title(); ?>
              
         <?php } /* конец while */ ?>
                                                        
                                                
          <?php
            } // конец if
            else 
            echo "<h2>Записей нет.</h2>";
           ?>

    А как вывести категории товаров, а вернее их элементы в заданном месте? Надо, чтобы выводился заголовок категории, ее url и миниатюра.

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Если вы используете WooCommerce, то можно воспользоваться функциями которые предоставляет данный плагин.

    Вот пример кода:

    $args = array(
        'taxonomy' => 'product_cat', // указываем таксономию товаров
        'hide_empty' => false, // показываем пустые категории
    );
    $terms = get_terms( $args ); // получаем список категорий
    
    if ( $terms && ! is_wp_error( $terms ) ) : // если категории найдены
        foreach ( $terms as $term ) { // перебираем категории
            $term_link = get_term_link( $term ); // получаем URL категории
            $term_thumb_url = get_woocommerce_term_meta( $term->term_id, 'thumbnail_id', true ); // получаем ID изображения миниатюры
    
            echo '<h2><a href="' . esc_url( $term_link ) . '">' . esc_html( $term->name ) . '</a></h2>'; // выводим заголовок и URL категории
            if ( $term_thumb_url ) {
                echo wp_get_attachment_image( $term_thumb_url, 'thumbnail' ); // выводим миниатюру, если она есть
            }
        }
    else :
        echo '<p>Категорий не найдено.</p>';
    endif;
    Модератор Yuri

    (@yube)

    Мне от цикла надо следующее (он будет на Главной странице):

    1. Вывести заголовок товарной категории.
    2. Сделать его ссылкой на категорию
    3. Вывести картинку (не миниатюру). Картинка подгружается через плагин ACF. Картинка тоже должна быть ссылкой на категорию. Можно показать на примере миниатюры. Думаю, что с ACF сам разберусь.

    Собственно, Ваш код, ipsoltl, хорош. Буду с ним работать. Спасибо.

    [product_categories]

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

    Еще вопрос, чтобы как говориться «два раза не вставать», как убрать подкатегории?

    Как вариант надо добавить ‘parent’ => 0 в массив $args, который и будет фильтровать.

    $args = array(
        'taxonomy' => 'product_cat', // указываем таксономию товаров
        'hide_empty' => false, // показываем пустые категории
        'parent' => 0, // фильтруем только категории без родительской категории
    );
    $terms = get_terms( $args ); // получаем список категорий

    Пробуйте…

    Спаисбо

    • Ответ изменён 1 год, 1 месяц назад пользователем Дмитрий.
Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Тема «Как вывести категории товаров в цикле wordpress?» закрыта для новых ответов.