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

  • Решено pro100ta

    (@pro100ta)


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

    <?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)

    Автор pro100ta

    (@pro100ta)

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

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

    (@pro100ta)

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

    [product_categories]

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

    Автор pro100ta

    (@pro100ta)

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

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

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

    Пробуйте…

    Автор pro100ta

    (@pro100ta)

    Спаисбо

    • Ответ изменён 2 недели назад пользователем pro100ta.
Просмотр 8 ответов — с 1 по 8 (всего 8)