根据上下文显示每页不同数量的帖子(例如,主页、搜索、存档)

时间:2010-08-11 作者:Doug

在阅读设置中,可以设置显示的帖子数量,该数量会影响所有上下文中显示的帖子数量。我想在主页上显示一定数量的帖子,在归档、搜索结果等页面上显示不同数量的帖子。

reading-settings-blog-pages-show-at-most-per-page

我意识到我可以通过编辑主题文件和更改那里的查询参数来做到这一点,但我更愿意更轻松地访问简单的设置页面。很久以前,我遇到了一个插件,可以做到这一点,但我现在找不到它

有没有人知道一个插件可以做到这一点,甚至我可以在函数中加入一个函数。php能完成同样的事情吗

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, 所以这不是一个好的解决方案

结束

相关推荐