在阅读设置中,可以设置显示的帖子数量,该数量会影响所有上下文中显示的帖子数量。我想在主页上显示一定数量的帖子,在归档、搜索结果等页面上显示不同数量的帖子。
根据上下文显示每页不同数量的帖子(例如,主页、搜索、存档)
4 个回复
最合适的回答,由SO网友:kevtrout 整理而成
我相信在插件中实现这一点的最好方法是在pre_get_posts
遇到了动作挂钩。这个$wp_query
对象可用,这意味着您的条件标记可用,但在WordPress获取帖子之前,这意味着您正在运行第一个查询之前更改查询变量,而不是像在主题文件中使用query\\u 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\');
SO网友:chrismccoy
您可以使用query\\u posts进行自定义循环,并通过is\\u home、is\\u archive等指定帖子的数量。
一个简单的if语句和query\\u posts
SO网友:glazsasha
来补充这个问题。如果将新页面添加到索引中,是否有人知道如何确定此函数的post\\u per\\u page功能custom\\u posts\\u per\\u page($query)。php如下所示:
<?php
if ($_GET[\'new\'] == 1)
{
include ( TEMPLATEPATH . \'/newpage.php\' );
exit;
}
?>
SO网友:Jeff Atwood
我意识到我可以通过编辑主题文件和更改那里的查询参数来做到这一点,但我更希望能够更轻松地访问简单的设置页面
为了完整起见,我发现query_posts
与…结合$query_string
串联效果很好
我把这个代码放在index.php
(我的主题没有category.php)
<?php
if (!is_front_page()) {
query_posts($query_string . "&posts_per_page=20");
}
?>
当然,我们在这里所做的是修改循环的内部查询字符串,overriding the default number of posts per page. 在主页上提供一个较小的帖子列表,在那里我显示完整的帖子,而在其他地方(类别、日期等)提供一个更大的帖子列表,在那里我只显示帖子摘要 然而,请注意,与公认的答案不同,this will run the query twice, 所以这不是一个好的解决方案结束