在wordpress 设置 => 阅读 => 博客页面中最多显示 [输入字段] 个帖子
目前,我将其设置为3个帖子。
在我的索引上,日期档案,标签档案,类别档案,搜索结果等...所有使用循环和分页的页面,现在每页显示3个帖子。
我的目标是针对不同的页面获得不同数量的结果。在我的索引上可能有3条帖子,但是在搜索结果或档案上,每页显示不同数量的结果。
任何想法如何做到这一点?
在wordpress 设置 => 阅读 => 博客页面中最多显示 [输入字段] 个帖子
目前,我将其设置为3个帖子。
在我的索引上,日期档案,标签档案,类别档案,搜索结果等...所有使用循环和分页的页面,现在每页显示3个帖子。
我的目标是针对不同的页面获得不同数量的结果。在我的索引上可能有3条帖子,但是在搜索结果或档案上,每页显示不同数量的结果。
任何想法如何做到这一点?
Answers:
可以做到这一点:(添加到主题的functions.php中)
add_action( 'pre_get_posts', 'set_posts_per_page' );
function set_posts_per_page( $query ) {
global $wp_the_query;
if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
$query->set( 'posts_per_page', 3 );
}
elseif ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_archive() ) ) {
$query->set( 'posts_per_page', 5 );
}
// Etc..
return $query;
}
改进上面的答案:挂钩pre_get_posts
是通过引用获取的,因此不需要global
调用或return
调用。
add_action( 'pre_get_posts', 'set_posts_per_page' );
function set_posts_per_page( $query ) {
if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
$query->set( 'posts_per_page', 3 );
}
elseif ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_archive() ) ) {
$query->set( 'posts_per_page', 5 );
}
// Etc..
}
使用$ GLOBALS ['wp_query']或仅使用$ wp_query
add_action( 'pre_get_posts', 'set_posts_per_page' );
function set_posts_per_page( $query ) {
if ( ( ! is_admin() ) && ( $query === $GLOBALS['wp_query'] ) && ( $query->is_search() ) ) {
$query->set( 'posts_per_page', 3 );
}
elseif ( ( ! is_admin() ) && ( $query === $GLOBALS['wp_the_query'] ) && ( $query->is_archive() ) ) {
$query->set( 'posts_per_page', 5 );
}
return $query;
}
set
一种方法$query
吗?