分页WooCommerce中的404另一个问题

时间:2019-04-01 20:04:00

标签: php wordpress woocommerce pagination

我读了很多文章,却没有找到答案。

我的自定义产品循环类别:

$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。

我的永久链接设置: enter image description here

我的“读取”设置: enter image description here

我做错了什么?

1 个答案:

答案 0 :(得分:0)

可能您的问题与 WP_Query 参数有关。我发现了以下问题:

  • “分页” 不是有效的参数
  • 已弃用作为键的分类法参数('product_cat'),您应该使用'tax_query'
  • $ page 变量值未定义(至少没有在示例脚本中定义),并且似乎同时定义了'page''分页的参数可能会导致查询冲突。

尝试使用以下内容:

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的原因。因此,如果上述脚本不能解决您的问题,我建议您也对此进行研究。