Еще одна проблема с 404 в нумерации страниц WooCommerce - PullRequest
0 голосов
/ 01 апреля 2019

Я прочитал так много статей и не нашел ответа.

мой пользовательский цикл товаров в категории:

$paged = get_query_var('paged') ? get_query_var('paged') : 1;
global $post;
$args = array(
'posts_per_page' => 6,
'product_cat' => $post->post_name, // **The father category**
'post_type' => 'product',
'paged' => $paged,
'page' => $page,
'pagination' => true
);
$loop = new WP_Query( $args );
echo $loop->request;
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
    global $product;
    ?>

////////////////// product info//////////////

    <?php endwhile;
    $big = 999999999; // need an unlikely integer
    echo paginate_links( array(
        'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
        'format' => '?paged=%#%',
        'current' => max( 1, get_query_var('paged') ),
        'total' => $loop->max_num_pages
    ) );
} else {
    echo __( 'No products found' );
}
wp_reset_postdata();

на странице категории у меня та же ссылка:

http://localhost:3000/product-category/cats/videocard/

нумерация страниц: http://localhost:3000/product-category/cats/videocard/page/2/

, но у меня есть 404.

мои постоянные настройки: введите описание изображения здесь

мои настройки "Чтение": введите описание изображения здесь

Что я делаю не так?

1 Ответ

0 голосов
/ 03 апреля 2019

Возможно, ваша проблема связана с аргументами WP_Query .Я обнаружил следующие проблемы:

  • 'pagination' не является допустимым аргументом,
  • аргумент таксономии ( 'product_cat' ) учитывая, что ключ устарел, вместо него следует использовать 'tax_query' .
  • значение переменной $ page не определено (по крайней мере, не в вашем примере скрипта), и кажется, что определение как 'page' , так и Аргументы 'paged' могут вызвать конфликты в вашем запросе.

Попробуйте использовать следующее:

global $post;
$args = array(
    'posts_per_page' => 6,
    'post_type'      => 'product',
    'paged'          => get_query_var('paged') ? get_query_var('paged') : 1,
    'tax_query'      => array(
        array(
            'taxonomy' => 'product_cat',
            'field'    => 'slug',
            'terms'    => $post->post_name // !
        ),
    ),
);
$loop = new WP_Query( $args );
// echo $loop->request;  - I guess this is a test left-over
if ( $loop->have_posts() ) {

    while ( $loop->have_posts() ) : $loop->the_post();
        /**
         * No need to call the $product global within the loop,
         * use the $loop->post or even better call the product object
         * using the WooCommerce wc_get_product() function as displayed
         * below
         */
        // global $product;
        $product = wc_get_product( $loop->post );
    ?>

////////////////// product info//////////////

    <?php endwhile;
    $big = 999999999; // need an unlikely integer
    echo paginate_links( array(
        'base'    => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
        'format'  => '?paged=%#%',
        'current' => max( 1, get_query_var('paged') ),
        'total'   => $loop->max_num_pages
    ) );

} else {

    echo __( 'No products found' );
}
wp_reset_postdata();

Последнее, но не менее важное значение термина таксономии, которое вы даете для product_cat (прокомментировано как категория отца ) является текущим постом слизня.Я понимаю, почему вы можете захотеть сделать это, но при некоторых обстоятельствах это также может быть причиной того, что вы получаете эти 404-е.Поэтому, если приведенный выше сценарий не решит вашу проблему, я бы посоветовал вам тоже разобраться в этом.

...