在读取设置中,有地方设置显示出影响所有上下文中显示的帖子数量的帖子数。我想在主页上显示一定数量的帖子,以及在档案,搜索结果等页面上的不同帖子。

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

我意识到我可以通过编辑主题文件并更改那里的查询参数来做到这一点,但是我更喜欢更容易访问简单的设置页面。很久以前,我遇到了一个这样做的插件,但是现在无法找到它。

有谁知道可以执行此操作的插件,甚至知道我可以在function.php中输入的函数来完成同一件事?

有帮助吗?

解决方案

我相信在插件中执行此操作的最好方法是在 pre_get_posts 遇到动作钩。这 $wp_query 对象可用,这意味着您的条件标签可用,但是在WordPress获取帖子之前,这意味着您要在运行第一个查询之前更改查询var,而不是添加第二个查询,例如query_posts()在主题文件中使用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

加入这个问题。有人知道如何确定此函数的post_per_page custom_posts_per_page($ query)如果将新页面添加到index.php这样的新页面:

<?php
if ($_GET['new'] == 1) 
{
    include ( TEMPLATEPATH . '/newpage.php' );
    exit;
}
?>

我意识到我可以通过编辑主题文件并更改那里的查询参数来做到这一点,但是我更喜欢更容易访问简单的设置页面。

为了完整,我发现 query_posts 结合 $query_string 串联效果很好。

我将此代码放在 index.php (我的主题没有类别。php)...

<?php 
if (!is_front_page()) { 
    query_posts($query_string . "&posts_per_page=20"); 
}
?>

当然,我们在这里做的是修改循环的内部查询字符串, 覆盖每个页面的默认帖子号码.

它可以很好地提供我在主页上提供完整帖子的较小帖子列表,以及在其他地方(类别,按日期等)提供的较大帖子列表,我只显示帖子摘要。

但是,请注意,与公认的答案不同, 这将两次运行查询, ,所以它不是一个很好的解决方案。

许可以下: CC-BY-SA归因
scroll top