我希望索引页面的帖子数量与其他页面(索引页面的第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开始计数?
 
                    最合适的回答,由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\');