问题描述
我想在我的首页 (总是最新的) 上有一个单独的帖子,但是让正常的分页工作。所以首页有帖子 1,下一页应该有帖子 2-11(1-10 也不错),然后是 12-21 或 11-20,依此类推。我知道我可以 change the number of posts depending on the context,但设置为”1″ 在主页意味着更多的页面也只显示一个职位。
我的主要问题是/page/2/
等工作,但是/page/1/
总是重定向到真正的主页,/
。这意味着第 2-10 页总是被跳过,因为第 2 页显示 11-20 。我 currently 通过链接到我的存档来解决这个问题,但是当你来到 the first posts of the year 并且没有明显的持续的方式的时候,这不是很理想。
最佳解决思路
我用 offset
查询参数解决了这个问题。这允许我在 pre_get_posts
钩子中编辑查询,并且似乎是最干净的方法,没有新的查询。现在主页只显示一个帖子,page/2/
显示帖子 2-11 。所有链接保持工作,不需要其他修改。
add_action('pre_get_posts', 'set_offset_on_front_page');
function _set_offset_on_front_page(&$query)
{
if (is_front_page() && is_paged()) {
$posts_per_page = isset($query->query_vars['posts_per_page']) ? $query->query_vars['posts_per_page'] : get_option('posts_per_page');
// If you want to use 'offset', set it to something that passes empty()
// 0 will not work, but adding 0.1 does (it gets normalized via absint())
// I use + 1, so it ignores the first post that is already on the front page
$query->query_vars['offset'] = (($query->query_vars['paged'] - 2) * $posts_per_page) + 1;
}
}
次佳解决思路
好的,也许这是一个奇怪或复杂的方法来做到这一点,但是我也有一个类似的问题 (我想在头版显示一个欢迎的文本和一个特定类别的三个最新的帖子,所以我做到了:
-
创建了一个名为 home 的新页面,并将我的欢迎文字放在上面。
-
停用默认主页,并将我的自定义主页设置为起始页
-
创建一个新的 (复制和修改的现有) 页面模板
-
让它显示页面正文
-
加载类别 X 的三个最新帖子并显示它们
-
有一个链接下面的链接”more” /category /category-x /
-
看起来像这样:http://hinek.de(页面是德语,对不起)
如果这可能是您的方式,您需要更多的信息或代码示例的页面模板,评论和我将编辑此帖子。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。