从第一页开始改变每页的帖子数

时间:2013-09-15 作者:jbx

我希望索引页面的帖子数量与其他页面(索引页面的第2页、第3页以及归档页面)不同。在我的例子中,我想将首页上的帖子数量限制为5篇,而其余的帖子将遵循wordpress admin的配置参数(在我的例子中是8篇)。

我遵循了本页上的示例here, 并钩住了pre_get_posts 过滤如下:

function limit_posts_per_home_page() 
{
    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;

    if ( is_front_page() && ($paged == 1))
        $limit = 5;
    else
        $limit = get_option(\'posts_per_page\');

    set_query_var(\'posts_per_archive_page\', $limit);
    set_query_var(\'posts_per_page\', $limit);
}
add_filter(\'pre_get_posts\', \'limit_posts_per_home_page\');
这“似乎”很有效。然而事实上posts_per_page 参数设置为8,索引页的第2页显示项目9到16,而不是6到13,因此缺少3个项目。

从第二页开始,是否有必要修改偏移量,使wordpress从6开始计数,而不是从8开始计数?

1 个回复
最合适的回答,由SO网友:jbx 整理而成

感谢s\\u ha\\u dum的提示。我通过设置offset 首页第二页以后的特殊情况下的参数如下:

function limit_posts_per_home_page() 
{
    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;

    $first_page_limit = 5;
    $limit = get_option(\'posts_per_page\');

    if (is_front_page())
    {
        if ($paged == 1)
        {
            $limit = $first_page_limit;
        }
        else
        {
            $offset = $first_page_limit + (($paged - 2) * $limit);
            set_query_var(\'offset\', $offset);   
        }
    }

    set_query_var(\'posts_per_archive_page\', $limit);
    set_query_var(\'posts_per_page\', $limit);
}
add_filter(\'pre_get_posts\', \'limit_posts_per_home_page\');

结束

相关推荐

How to use/enable Pagination?

我正在创建一个快捷码,以显示WordPress中具有特定配置文件的用户列表。但我无法启用或显示分页。我的网站上有25个用户,希望每页显示5个配置文件用户,并包括分页。我为学生档案添加了一个新角色student和多个使用高级自定义字段的自定义字段。因此,我需要显示一个学生列表作为适当的字段。到目前为止,问题是我无法启用的分页。下面是我的代码示例:add_shortcode(\'list-users\', \'list_users\'); function list_users($atts)