Шорткоды Wordpress
Вывожу на странице товары с помощью шорткода [product_page]. Товаров около 100. Мне нужно выводить их по 8 с пагинацией. Подскажите, пожалуйста, как это можно реализовать?
Источник: Stack Overflow на русском
Вывожу на странице товары с помощью шорткода [product_page]. Товаров около 100. Мне нужно выводить их по 8 с пагинацией. Подскажите, пожалуйста, как это можно реализовать?
Сделайте запрос по товарам через WP_Query с пагинацией. А при выводе товара используйте шорткод.
<?php
$current_page = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = [
'post_type' => 'product',
'posts_per_page' => 8,
'paged' => $current_page,
];
$products = new WP_Query( $args );
if ( $products->have_posts() ) {
while ( $products->have_posts() ) {
$products->the_post();
// Output the product.
echo do_shortcode( '[product_page id="' . $post->ID . '"]' );
}
// Reset post data after cycle.
wp_reset_postdata();
} else {
echo '<p>No products.</p>';
}
// Pagination.
$pagination_args = [
'base' => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ),
'total' => $products->max_num_pages,
'current' => $current_page,
'format' => '?paged=%#%',
'prev_next' => true,
'prev_text' => __( '« Previous' ),
'next_text' => __( 'Next »' ),
'type' => 'plain',
'end_size' => 2,
'mid_size' => 2,
];
$paginate_links = paginate_links( $pagination_args );
if ( $paginate_links ) {
echo '<nav class="woocommerce-pagination">';
echo $paginate_links;
echo '</nav>';
}
Полагаю, что вы используете Wordpress старше версии 3.2. В таком случае попробуйте такой shortcode
[products limit="8" columns="4" paginate="true"]
В результате должен получиться вывод 8-ми товаров в 2 строки 4 колонки. Если товаров больше, чем 8 (100 в вашем случае), то где-то справа сверху-снизу должна появиться постраничная навигация