在WordPress中,有时候我们希望不同的分类显示的文章数量不同,或者说比如首先显示10篇最新文章,其他的搜索页、标签页、分类页以及时间索引页却要显示20篇文章,那么下面的代码就对你有用了。
注:默认情况下,wordpress页面显示文章数量是在后台设置中阅读设置修改显示的,并且全站都是统一数量的。有时候我们为了出于需要,要让不同页面显示不同的文章篇数量,那么只要把下面代码加入functions.php中即可(代码中整合了首页排除制定分类,如果你不需要,删除相关代码即可)。
- function custom_posts_per_page($query){
- if(is_home()){
- $query->set('posts_per_page',8);//首页每页显示8篇文章
- }
- if(is_search()){
- $query->set('posts_per_page',-1);//搜索页显示所有匹配的文章,不分页
- }
- if(is_archive()){
- $query->set('posts_per_page',25);//archive每页显示25篇文章
- }
- if ( $query->is_home ) { //首页排除指定分类id为1,3
- $query->set( 'cat', '-1, -3' );
- }
- if( is_category(array(1,3)) ){
- $query->set('posts_per_page',20);//指定id为1,3的分类显示20篇文章
- }
- }
- add_action('pre_get_posts','custom_posts_per_page');
下面的代码可以实现WordPress在首页显示或只显示自定义文章类型。
- function uctheme_posts_per_page($query){
- //首页或者搜索页的主循环
- if ( (is_home() || is_search()) && $query->is_main_query() )
- //$query->set( 'post_type', array( 'product' ) ); //只显示product
- $query->set( 'post_type', array( 'post', 'product' ) ); //主循环中显示post和product
- return $query;
- }
- add_action('pre_get_posts','uctheme_posts_per_page');