有这样的一个查询条件:自定义文章类型video,在其分类页面,每页显示两组内容。
global $wp_query; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'video', 'tax_query' => array( array( 'taxonomy' => 'videos', 'field' => 'slug', 'terms' => 'v', ) , ) , 'posts_per_page' => 2, 'paged' => $paged, ); $cus_query = new WP_Query($args);
分页导航如下:
echo paginate_links(array( 'total' => $cus_query -> max_num_pages));
但是会发现,在点击第二页甚至往后的页时均会显示404。
在后台设置里有这么一个项目:博客页面至多显示。
如果这里设置的数,超出上面的自定义文章video的总文章数,就会显示404。
虽然,分页导航以一页两篇文章的方式,分出了N个页。但是并没有覆盖后台博客的显示数。
举例:
如果后台设置最多显示15篇,但是自定义文章video总共12篇。如果按每页2篇设置分页导航那么会分出6页。
但是,在分页导航点第二页时,数据库查询实际上从第16篇文章开始搜索的。但自定义文章video显然不够16篇。
这样就会从第二页开始显示404。
解决方法:
需要一个辅助设置。在主题function里添加自定义文章video相关的数据库查询条件:
function my_custom_posts_per_page( $query ) { if (!is_admin() && post_type_exists('video') && is_tax('videos') ) $query->set( 'posts_per_page', 2 ); } add_filter('parse_query', 'my_custom_posts_per_page');
从代码中可以看出,目的就是在当有自定义文章类型video存在时,且在video的分类页面(设taxonomy为videos)时,将系统的默认每页显示数设置成2。这样,问题应该就解决了。
小结:
我想这个是wordpress的一个bug吧。也有可能我们在编写代码时忽略了什么。
评论区
发表新的留言
您可以留言提出您的疑问或建议。
您的留言得到回复时,会通过您填写的邮箱提醒您。