У меня есть собственный виджет Wordpress, который позволяет пользователю фильтровать продукты с помощью атрибутов (настраиваемые таксономии).
Все это происходит через вызов Ajax, но у меня возникают проблемы с обновлением разбивки на страницы на основе отфильтрованных результатов.
Например:
Если на странице загружено 30 товаров, 10 на страницу = 3 страницы результатов.
Затем пользователь фильтрует по атрибуту, который уменьшает эти 30 продуктов до 20. Мне нужно, чтобы разбивка на страницы изменилась до 2 страниц результатов.
Вот образец WP_Query, который заменяет содержимое страницы по умолчанию. Вы можете увидеть woocommerce_pagination(), который, похоже, не работает в этой среде.
// Args
$args = array(
'post_type' => 'product',
'posts_per_page' => 10,
'orderby' => 'name',
'order' => 'ASC',
'tax_query' => $tax_query
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) :
woocommerce_product_loop_start();
while( $query->have_posts() ): $query->the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
woocommerce_product_loop_end();
// TODO - get pagination working
woocommerce_pagination();
wp_reset_postdata();
else :
echo '<p>No products found</p>';
endif;






Пагинация WooCommerce работает на основе глобальной переменной $wp_query. Но вы используете свою собственную переменную $query. Поэтому очевидно, почему он не работает.
У вас есть 2 пути:
query_posts вместо класса WP_QUERY.$wp_query.Вот:
global $wp_query;
$wp_query->max_num_pages=$query->max_num_pages;
// TODO - get pagination working
woocommerce_pagination();
Я смог решить проблему с URL-адресом разбиения на страницы с помощью шага 2 эта почта. Хотя, как всегда, возникло новое препятствие ... мои фильтры стираются при перезагрузке страницы при нажатии на пагинацию. Это задача на другой день. Я приму ответ Эльвин Хачи!
Спасибо за помощь! Я попробовал чит-код
$wp_query, который помог мне добиться успеха. Что происходит сейчас, так это то, что URL-адрес кнопок разбиения на страницы установлен на/wp-admin/admin-ajax.php?paged=2Атрибут формыactionустановлен на<?= site_url() ?>/wp-admin/admin-ajax.php