問題描述
我想在我的首頁 (總是最新的) 上有一個單獨的帖子,但是讓正常的分頁工作。所以首頁有帖子 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。