Вывод result_count и catalog_ordering в произвольном шаблоне для товаров woocommerce

955
08 января 2019, 04:00

как вывести базовую сортировку и количество товаров на странице, используя свой шаблон?

Вопрос взялся следуя данной документации, в которой написано, чтобы использовать фильтр, мне нужно обязательно применять следующие четыре параметра:

https://mihajlovicnenad.com/product-filter/documentation-and-full-guide-video/#installation-3gsd

  1. ul class="products"
  2. li class="type-product"
  3. woocommerce-ordering
  4. woocommerce-result-count

Основная идея заключается в том, чтобы на произвольной странице выводить каталог продукции по основным (родительским) категориям и с ними товары в слайдере списком:

Категория 1

Товары из категории 1 (slick-slider)

Категория 2

Товары из категории 2 (slick-slider)

И тд..

Создал шаблон, написал цикл, который выводит категории и товары:

<?php
/**
 * Template Name: Конфигуратор
 *
 * Description: Вывод товаров по категориям с фильтрацией
 *
 * @package WordPress
 * @subpackage AFYOS
 * @since Afyos 1.0.0
 */
get_header('');
?>

<div id="primary" class="site-content afyos-configurator-wrapper">
    <div id="content" role="main">
        <?php echo do_shortcode( '[prdctfltr_sc_get_filter preset="configurator"]' ); ?>

        <?php
          $taxonomy     = 'product_cat';
          $orderby      = 'name';  
          $show_count   = 1;      // 1 for yes, 0 for no
          $pad_counts   = 1;      // 1 for yes, 0 for no
          $hierarchical = 1;      // 1 for yes, 0 for no  
          $title        = '';  
          $empty        = 0;
          $args = array(
                 'taxonomy'     => $taxonomy,
                 'orderby'      => $orderby,
                 'show_count'   => $show_count,
                 'pad_counts'   => $pad_counts,
                 'hierarchical' => $hierarchical,
                 'title_li'     => $title,
                 'hide_empty'   => $empty
          );
         $all_categories = get_categories( $args );
         foreach ($all_categories as $cat) {
                if($cat->category_parent == 0) {
                    $category_id = $cat->term_id;       
                    echo '<br /><h2 class="afyos-category-title afyos-'.$cat->slug.'"><a href="'. get_term_link($cat->slug, 'product_cat') .'">'. $cat->name .'</a></h2>';
                    $args = array(
                                    'posts_per_page' => -1,
                                    'tax_query' => array(
                                        'relation' => 'AND',
                                        array(
                                            'taxonomy' => $taxonomy,
                                            'field' => 'slug',
                                            'terms' => $cat->slug
                                        )
                                    ),
                                    'post_type' => 'product',
                                    'orderby' => 'title,'
                                );
                                $products = new WP_Query( $args );

                                echo "<ul class='products afyos-configurator-layout afyos-".$cat->slug."'>";
                                echo "<div class='afyos-configurator-slide'>";
                                while ( $products->have_posts() ) {
                                    $products->the_post();
                                    ?>
                                        <li class="afyos-configurator-layout__products product type-product">
                                            <a href="<?php the_permalink(); ?>">
                                                <?php the_post_thumbnail(); ?>
                                            </a>
                                        </li>
                                    <?php
                                }
                        echo "</div>";
                        echo "</ul>";
                        echo "<div style='clear:both;'></div>";   
                }       
            }
        ?>

    </div>
</div>
<?php
get_footer();

Имею следующий вид:

http://joxi.ru/bmoJ0Oycx5dOer

За основу брал структуру:

https://demos.skyverge.com/product-category/nested-category-layout/?orderby=menu_order

Пробовал использовать do_action( 'woocommerce_before_shop_loop' ); Но не понял, как его связать..

Но теперь, чтобы заработал фильтр по товарам нужно добавить сортировку и количество товаров.

В дальнейшем, наверное это уже будет второй вопрос. Выводить фильтр для каждой категории с атрибутами в этой категории (только те атрибуты, которые есть в этой категории у товаров). Планирую использовать prdctfltr и выводить прямо в цикле. Как будет правильнее это организовать?

READ ALSO
Разбить массив Mysql на строки php

Разбить массив Mysql на строки php

Я только изучаю php и mysql, хотел узнать, возможно ли разбить массив такого вида:

181
Laravel eloquent оптимизация

Laravel eloquent оптимизация

Недавно понадобилось извлечь из таблицы 1600 товаров + из отдельной таблицы артикулы + бренды из тоже отдельной таблицыКазалось бы сделал что...

189
Использование GET параметра в форме php

Использование GET параметра в форме php

Интересует следующий вопрос: есть форма авторизации в файле indexphp, как сделать так, чтобы эта форма стала доступной после введения GET параметр?

187
Можно ли получить список timezone -ов из класса Carbon?

Можно ли получить список timezone -ов из класса Carbon?

Как видно конструктор класса Carbon принимает параметр timezone

151