在開發(fā)WordPress自定義查詢邏輯的時(shí)候,當(dāng)自定義文章查詢頁面的每頁文章數(shù)小于后臺(tái)設(shè)置的每頁文章數(shù)時(shí),經(jīng)常會(huì)出現(xiàn)最后一頁為404的問題,這是因?yàn)樵谶@種情況下,分頁計(jì)算的邏輯早于獲取文章的查詢,實(shí)際上,最后一頁是有文章的,只是沒有顯示出來而已。
要解決這個(gè)問題,我們只需要再獲取文章之前設(shè)置好每頁的文章數(shù)量即可,要做到這一點(diǎn),使用 pre_get_posts hook 即可,具體參考下面的代碼。
add_action('pre_get_posts', function ($query)
{
if ( ! is_admin() && $query->is_tax('book_cat')) {
$query->set('posts_per_page', 12);
}
});
pre_get_posts 這個(gè)Hook的主要作用是在創(chuàng)建查詢變量對(duì)象之后、運(yùn)行實(shí)際查詢之前為我們提供一個(gè)修改查詢對(duì)象的機(jī)會(huì),來修改查詢變量,我們可以使用這個(gè) Hook 來修改分頁查詢參數(shù),把文章查詢中每頁顯示的文章數(shù)量設(shè)置為我們需要的分頁數(shù)量即可。
除了分頁問題,其他類似的問題都可以適用這個(gè) hook 來修改,有需要的朋友可以試試。

