最近在准备把汇特网app主题从zblog转换到wordpress,过程中遇到了需要不同的分类设置不同的每页显示文章数量。解决这个问题后写了这一篇教程来介绍下过程。
wordpress每页显示文章数量默认在后台--设置--阅读--博客页面至多显示里面设置,但是这个是公共配置,所有的分类都会使用这个设置的数字。当我们需要不同的分类设置不同的每页显示文章数量就得挂上wordpress的钩子,然后调用自定义设置的值即可。
需要挂的钩子为“pre_get_posts”,详细代码如下:
//不同分类调用不同的分页显示数量 function tx_wp_filter_pre_get_posts($query) { if ($query->is_main_query()) { //判断是否主查询 $num = ''; if (is_category()) { //判断是否分类 $cat_ID = get_queried_object_id(); //获取到分类ID if (get_option('cat-pagenum-' . $cat_ID)) { //判断分类自定义字段是否有值 $num = get_option('cat-pagenum-' . $cat_ID); $query->set('posts_per_page', $num); //给主循环数据里面的每页文章数量赋值 } } } return $query; } add_action('pre_get_posts', 'tx_wp_filter_pre_get_posts');//挂上钩子
注意:以上代码需要搭配分类自定义字段使用,以后会分享设置分类自定义字段。
如果你还不会分类自定义字段或者只需要针对某个指定分类设置可以用下面的代码更简单:
//不同分类调用不同的分页显示数量 function tx_wp_filter_pre_get_posts($query) { if ($query->is_main_query()) { //判断是否主查询 $num = ''; if (is_category(array(1))) { //数字1为指定分类id $num = 2; //数字2为每页文章数量值可以任意修改但必须是整数 $query->set('posts_per_page', $num); //给主循环数据里面的每页文章数量赋值 } } return $query; } add_action('pre_get_posts', 'tx_wp_filter_pre_get_posts');//挂上钩子
还没有评论呢,快来抢沙发~