Витрина с ajax подгрузкой категорий
-
Доброго времени суток!
Буду благодарен за помощь или подсказку верного направления. Используется крайний WP и Woo, тема Storefront. Задача следующая: на странице витрины (любая страница) нужно вывести все товары, которые разбиты на категории. Т.е. Категория столы: стол 1, стол 2, стол 3…, ниже Категория стулья: стул 1, стул 2,… и т.д. В связи с тем, что товаров много, сайт грузится по 10-15 сек на ПК и до 1 мин на телефонах. Просьба не писать, что это глупо, не круто и пр. Есть задача, она такая, я понимаю, что это не идеал, тем не менее такие магазины есть и грузятся достаточно быстро.
Хочу реализовать следующее, или
а) загрузка витрины с 4 товарами в каждой категории, после первого скролла ajax грузит следующие 4-8-12 шт в каждой категории
б) загрузить первую категорию полностью, а последующие подгружаются после скролла.Пробовал разные варианты. В итоге обычный ajax запрос, который работает с постами, не работает с товарами.
Так вывожу все товары по категориям:
<?php $args_tax = array( 'taxonomy' => 'product_cat', 'hierarchical' => 0, 'hide_empty' => 1, ); $all_categories = get_categories( $args_tax ); foreach ($all_categories as $cat) { echo '<h2>' . $cat->name . '</h2>'; $args_prod = array( 'post_type' => 'product', 'posts_per_page' => -1, 'product_cat' => $cat -> slug, 'order' => 'ASC', ); $loop = new WP_Query( $args_prod ); woocommerce_product_loop_start(); while ( $loop->have_posts() ) : $loop->the_post(); wc_get_template_part( 'content', 'product' ); endwhile; wp_reset_query(); ?>
Если я правильно понимаю, то в случае (а) (загрузка 4 товаров в каждой категории, а потом подгрузка после скролла), мне нужно указать в args_prod — posts_per_page=4 и подключить ajax. Но проблема в том, что $loop->max_num_pages всегда равен 1 (даже если товаров 30, а posts_per_page=4), в скрипте
<script> var ajaxurl = "<?php echo site_url() ?>/wp-admin/admin-ajax.php"; var products_query = "<?php serialize($loop->query_vars) ?>"; </script>
получаю ошибку «SyntaxError: Unexpected identifier». И дальше ajax не работает, т.к. изначальный query не правильный. Буду благодарен за подсказку, как правильно написать в данном случае?
В варианте (б) (загрузить первую категорию, а после скролла остальные), в args_tax добавлял number=1, а в запросах offset=1, но тоже не совсем понимаю как правильно написать запрос к БД.
У кого какие мысли, как можно заставить работать? Заранее спасибо!
- Тема «Витрина с ajax подгрузкой категорий» закрыта для новых ответов.