目录
首页 笔记 详情

用pre_get_posts钩子实现WordPress不同分类则每页显示不同数量的文章


有时我们需要让wordpress不同的分类显示不同数量的文章并分页,比如资讯的分类页显示20篇并分页,教程的分类页显示10篇并分页,要如何实现呢? pre_get_posts的功能非常强大,可以通过修改$query来过滤所有日志的展示结果,通过pre_get_posts能做的事情还有还多,通过修改上面示例代码的条件判断可以在不同的页面自定义日志查询结果。

function filter_pre_get_posts( $query ){
  if ( $query->is_main_query() ){
    $num = '';   
    if ( is_category(array(9)) ){ $num = 14; }
    //if ( is_category(array(10)) ){ $num = 14; }
    //if ( is_category(array('questions')) ){ $num = 14; }
    // if ( in_category(array('jhg','hjj','yjj','xxj','jlg')) ){ $num = 10; }
    //if ( is_home() ){ $num = 10; }
    // else if ( is_category() ){ $num = 10; }
    // else if ( is_tag() ){ $num = 10; }
    // else if ( is_date() ){ $num = 10; }
    // else if ( is_author() ){ $num = 10; }
    // else if ( is_search() ){ $num = 10; }
    // else if ( is_archive() ){ $num = 10; }
    if ( '' != $num ){ $query->set( 'posts_per_page', $num ); }
  }
  return $query;
}
add_action('pre_get_posts', 'filter_pre_get_posts');

自定义搜索范围

function search_filter($query) {
	if ( !is_admin() && $query->is_main_query() && $query->is_search ) $query->set('post_type', array( 'post','article' ) );
	}
add_action('pre_get_posts','search_filter');

 


写笔记

咨询

您的电子邮箱地址不会被公开。 必填项已用*标注