Шорткоды Wordpress

Рейтинг: 0Ответов: 2Опубликовано: 09.04.2023

Вывожу на странице товары с помощью шорткода [product_page]. Товаров около 100. Мне нужно выводить их по 8 с пагинацией. Подскажите, пожалуйста, как это можно реализовать?

Ответы

▲ 1Принят

Сделайте запрос по товарам через 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' => __( '&laquo; Previous' ),
    'next_text' => __( 'Next &raquo;' ),
    '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>';
}
▲ 0

Полагаю, что вы используете Wordpress старше версии 3.2. В таком случае попробуйте такой shortcode

[products limit="8" columns="4" paginate="true"]

В результате должен получиться вывод 8-ми товаров в 2 строки 4 колонки. Если товаров больше, чем 8 (100 в вашем случае), то где-то справа сверху-снизу должна появиться постраничная навигация