我在存档中有一个自定义WP\\U查询。我知道这并不理想,但当我尝试将其切换为pre\\u get\\u posts选项时,我的页面只会进入一个无限循环,因此我宁愿使用WP查询。问题是分页将我发送到/page/2上的404错误。
我的查询(后面还添加了一些分类法和元查询)
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$query_args = array(
\'post_type\' => \'product\',
\'posts_per_page\' => 2,
\'paged\' => $paged,
);
这是我的分页功能
function pagination($query){ ?>
<ul class="pagination">
<?php
$pages = paginate_links( array(
\'base\' => str_replace( 999999999, \'%#%\', esc_url( get_pagenum_link( 999999999 ) ) ),
\'total\' => $query->max_num_pages,
\'current\' => max( 1, get_query_var( \'paged\' ) ),
\'format\' => \'?paged=%#%\',
\'show_all\' => false,
\'type\' => \'array\',
\'end_size\' => 2,
\'mid_size\' => 1,
\'prev_next\' => true,
\'prev_text\' => \'<span class ="fa fa-caret-left" aria-hidden="true"></span><span class="prev-text">Prev</span>\',
\'next_text\' => \'<span class="next-text">Next</span> <span class ="fa fa-caret-right" aria-hidden="true"></span>\',
\'add_args\' => false,
\'add_fragment\' => \'\',
) );
if (is_array($pages)):
foreach ($pages as $p): ?>
<li class="pagination-item js-ajax-link-wrap">
<?php echo $p; ?>
</li>
<?php endforeach;
endif; ?>
</ul>
<?php
}
分页显示正确。。。问题是,当我转到“/页/2”时,它会抛出404错误。
最合适的回答,由SO网友:Jordan Carter 整理而成
找到答案!!!
将其放入函数中。php(或必需的文件)。当然,可以根据您的需要进行更改。我需要一些只适用于产品类别归档的东西。
function modify_product_cat_query( $query ) {
if (!is_admin() && $query->is_tax("product_cat")){
$query->set(\'posts_per_page\', 2);
}
}
add_action( \'pre_get_posts\', \'modify_product_cat_query\' );
我还从WP\\u查询中取出了posts\\u per\\u page参数。