在“阅读设置”中,可以设置显示的帖子数量,该数量会影响在所有上下文中显示的帖子数量。我想在首页上显示一定数量的帖子,而在归档,搜索结果等页面上显示不同数量的帖子。
我意识到我可以通过编辑主题文件并在其中更改查询参数来做到这一点,但我希望可以更轻松地访问简单的设置页面。很久以前,我遇到了一个可以做到这一点的插件,但是现在找不到它。
有谁知道一个插件可以做到这一点,或者甚至我可以将一个函数放到functions.php中来完成相同的功能?
在“阅读设置”中,可以设置显示的帖子数量,该数量会影响在所有上下文中显示的帖子数量。我想在首页上显示一定数量的帖子,而在归档,搜索结果等页面上显示不同数量的帖子。
我意识到我可以通过编辑主题文件并在其中更改查询参数来做到这一点,但我希望可以更轻松地访问简单的设置页面。很久以前,我遇到了一个可以做到这一点的插件,但是现在找不到它。
有谁知道一个插件可以做到这一点,或者甚至我可以将一个函数放到functions.php中来完成相同的功能?
Answers:
我相信在插件中执行此操作的最佳方法pre_get_posts
是在遇到动作挂钩时运行以下示例函数。该$wp_query
对象可用,这意味着您的条件标记可用,但是在WordPress获得帖子之前,这意味着您在运行第一个查询之前更改查询变量,而不是像在主题中使用query_posts()那样添加第二个查询文件。
function custom_posts_per_page($query) {
if (is_home()) {
$query->set('posts_per_page', 8);
}
if (is_search()) {
$query->set('posts_per_page', -1);
}
if (is_archive()) {
$query->set('posts_per_page', 25);
} //endif
} //function
//this adds the function above to the 'pre_get_posts' action
add_action('pre_get_posts', 'custom_posts_per_page');
您可以使用query_posts进行自定义循环,并按is_home,is_archive等指定帖子数。
只是一个简单的if语句以及query_posts
query_posts
主题,则将忽略原始查询,并进行另一个冗余的查询。
我意识到我可以通过编辑主题文件并在其中更改查询参数来做到这一点,但我希望可以更轻松地访问简单的设置页面。
为了完整起见,我发现query_posts
结合使用$query_string
串联效果很好。
我将这段代码放在index.php
(我的主题没有category.php)中...
<?php
if (!is_front_page()) {
query_posts($query_string . "&posts_per_page=20");
}
?>
当然,我们在这里要做的是修改循环的内部查询字符串,从而覆盖每页默认的帖子数。
它可以使我在主页上显示完整的帖子的列表较少,而在其他地方(类别,日期等)仅显示帖子摘要的列表中,提供较小的列表。
但是,请注意,与接受的答案不同,此方法将两次运行查询,因此它不是一个很好的解决方案。