close

WP的自定义文章分类archive页面的分页方式

当你创建如archive-posttyps.php 之类的自定义文章类型的archive的时候,你要调用这个文章分类的内容,你就无需用自定义的wp_query, 默认的query已经随着文件名字给到了网站。所以依然是默认的写法。

但是你想调整下文章显示数量怎么办?

你可以有两种方式,一种仍然是默认的query, 在archive-pottypes.php 里, 你通过默认的while来调出文章,然后你在functions.php通过函数来重新调整posts_per_page:

function set_posts_per_page_for_portfolios($query) {
  if (!is_admin() && $query->is_main_query() && is_post_type_archive( 'portfolios' )) {
    $query->set('posts_per_page','9');
  }
}

然后添加pre_get_posts的钩子,add_action(‘pre_get_posts’,’set_posts_per_page_for_portfolios’); 这种方法对于想要调整任何类型的任何参数都通用。当你想要调整其他的参数的时候,你只需添加多条$query->set(‘order’,’ASC’); 并修改参数即可。

第二种方法就是要创建页面的模板,在页面的模板,通过自定义的wp_query:new WP_Query来调用,在参数里面就可以设置 ‘posts_per_page’为9 。

关于分页:分页设计到很多query的问题,分页本身也是查询,第二页的话分页函数会查询到底该分到哪里去。

在页面模板要调用自定义的wp_query的话,首先在参数里要设置 ‘paged’ .

$query = new WP_Query(array(
	'post_type'  => 'slides',
	'posts_per_page'  => 9,
	'paged'  => (get_query_var('paged')) ? get_query_var('paged') : 1

然后在需要分页的地方,添加

paginate_links( [‘total’ => $query->max_num_pages] );

Share :