我希望索引页面的帖子数量与其他页面(索引页面的第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\');