Palych_tw
@Palych_tw
Типа веб-разработчик

Почему не работает пагинация woocommerce?

Не работает пагинация на странице с распродажей. Суть такая. Взял стандартный archive-product.php, создал из него шаблон для страницы с отбором товаров по распродаже. Все выводится и работает кроме пагинации.. урл меняется при переключении страниц, но все равно выводятся первые 20 товаров, хоть на 2ой, хоть на 4ой странице. И в списке страницы "current" всегда остается первая. Вот код шаблона:
<?php
/**
 * Template Name: page-sale
 */
if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}
get_header( ); ?>
    <main>
        <div class="container container-main">
            <div class="row">
                <div class="col-md-9">
                    <?php
                    do_action( 'woocommerce_before_main_content' );
                    ?>
                    <?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
                        <h1 class="page-title">Распродажа!</h1>
                    <?php endif; ?>
                    <?php
                    do_action( 'woocommerce_archive_description' );
                    $args = array(
                        'post_type'      => 'product',
                        'meta_query'     => array(
                            'relation' => 'OR',
                            array( // Simple products type
                                'key'           => '_sale_price',
                                'value'         => 0,
                                'compare'       => '>',
                                'type'          => 'numeric'
                            )
                        )
                    );
                    query_posts( $args );
                    ?>
                    <?php if ( have_posts() ) : ?>
                        <?php
                        do_action( 'woocommerce_before_shop_loop' );
                        ?>
                        <?php woocommerce_product_loop_start(); ?>
                        <?php woocommerce_product_subcategories(); ?>
                        <?php while ( have_posts() ) : the_post(); ?>
                            <?php wc_get_template_part( 'content', 'product' ); ?>
                        <?php endwhile; // end of the loop. ?>
                        <?php woocommerce_product_loop_end(); ?>
                        <?php
                        do_action( 'woocommerce_after_shop_loop' );
                        ?>
                    <?php elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) : ?>
                        <?php wc_get_template( 'loop/no-products-found.php' ); ?>
                    <?php endif; ?>
                </div>
                <?php
                do_action( 'woocommerce_after_main_content' );
                ?>
                <?php get_sidebar(); ?>
            </div>
        </div>
    </main>
<?php get_footer( ); ?>
  • Вопрос задан
  • 1763 просмотра
Решения вопроса 1
Palych_tw
@Palych_tw Автор вопроса
Типа веб-разработчик
Добавил в массив 'paged' => $paged, все заработало
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Вам нужен метод Барта Симпсона.

Берете пачку бумаги формата А4, ручку, садитесь за стол, и начинаете писать на первом листе, одну за другой, от начала до конца листа и на обороте, фразу "Я БОЛЬШЕ НИКОГДА НЕ БУДУ ИСПОЛЬЗОВАТЬ ФУНКЦИЮ QUERY_POSTS()"...

Я больше не знаю как до людей достучаться. Говорено-переговорено на эту тему сотни тысяч раз, гугл просто переполнен этим предупреждением, но люди продолжают наступать на грабли.

В вашем случае, почитайте про хук pre_get_posts
Ответ написан
Комментировать
deenween
@deenween
Laravel
Есть плагин решающий данную проблему: https://ru.wordpress.org/plugins/on-sale-page-for-...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы