category.php 上的分页在 wordpress 中不起作用
Pagination on category.php not working in wordpress
我使用自定义永久链接 /%category%/%postname%/
在类别的页面上 (category.php) 我使用分页,例如 /shops/paged/2 并得到 404 错误
P.S。如果我去 /shops/paged/1 它有效
P.P.S 使用自定义查询 WP_Query 和 wp_pagenavi()
global $paged;
if (get_query_var( 'paged' ))
$my_page = get_query_var( 'paged' );
else {
if( get_query_var( 'page' ) )
$my_page = get_query_var( 'page' );
else
$my_page = 1;
set_query_var( 'paged', $my_page );
$paged = $my_page;
}
$args = array(array('posts_per_page' => 2, 'paged' => $paged, 'post_type' => 'post', 'category_name' => 'my_category_nicename'));
$the_query = new WP_Query( $args );
...
while ( $the_query->have_posts() ):
...
我该如何解决?
非常感谢!!
您需要修改类别页面上的主循环,而不是创建一个新循环。您所在类别的主循环没有第 2 页,因此它永远不会显示您修改的 category.php 文件,而是加载 404 模板。
在下面的示例中,我使用 pre_get_posts
检查我们是否在类别页面上并将每页的帖子数更改为 2。
function wpse_modify_category_query( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
if ( $query->is_category() ) {
$query->set( 'posts_per_page', 2 );
}
}
}
add_action( 'pre_get_posts', 'wpse_modify_category_query' );
我使用自定义永久链接 /%category%/%postname%/ 在类别的页面上 (category.php) 我使用分页,例如 /shops/paged/2 并得到 404 错误
P.S。如果我去 /shops/paged/1 它有效 P.P.S 使用自定义查询 WP_Query 和 wp_pagenavi()
global $paged;
if (get_query_var( 'paged' ))
$my_page = get_query_var( 'paged' );
else {
if( get_query_var( 'page' ) )
$my_page = get_query_var( 'page' );
else
$my_page = 1;
set_query_var( 'paged', $my_page );
$paged = $my_page;
}
$args = array(array('posts_per_page' => 2, 'paged' => $paged, 'post_type' => 'post', 'category_name' => 'my_category_nicename'));
$the_query = new WP_Query( $args );
...
while ( $the_query->have_posts() ):
...
我该如何解决?
非常感谢!!
您需要修改类别页面上的主循环,而不是创建一个新循环。您所在类别的主循环没有第 2 页,因此它永远不会显示您修改的 category.php 文件,而是加载 404 模板。
在下面的示例中,我使用 pre_get_posts
检查我们是否在类别页面上并将每页的帖子数更改为 2。
function wpse_modify_category_query( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
if ( $query->is_category() ) {
$query->set( 'posts_per_page', 2 );
}
}
}
add_action( 'pre_get_posts', 'wpse_modify_category_query' );