我知道有人问过类似的问题,但似乎没有一个能回答这个问题。
我已经在主页上设置了一个post循环小部件。它有分页功能,但每当转到第一页以外的任何一页时,我都会收到一个令人讨厌的404。原因是,当URL获取/page/2/
或a/?page=2
在其中,WordPress不再将调用定向到主页模板。相反,它似乎假设有一个具有该名称的页面,但它找不到它,因此它抛出了一个404。
因此,我的问题是,WordPress什么时候/为什么决定它不是主页?为什么?我如何强制它继续使用主页模板?(即front page.php)
更新
看来,在将我的主页显示从“你的最新帖子”(这与主题/子主题无关,因为主题会丢弃任何内容,并在活动时用其小部件替换)切换到“静态页面”(我选择了一个随机页面,它无论如何都不会显示)之后,它现在没有给出404,而是停留在第1页,即使URL中显示了/page/2(另一个常见的报告错误)。
最合适的回答,由SO网友:Codesmith 整理而成
经过一番研究和玩弄,我确实让它发挥了作用。
Issue 1
第一个技巧(如上所述)是将主页显示切换为使用“静态页面”这消除了404的问题,但没有修复保留在第1页的分页。
Issue 2
第二个问题,我通过获取“page”查询变量而不是“paged”查询变量来修复,根据WP get_query_var documentation page:
要获取静态首页(页面模板)上的当前页码,必须使用“page”查询变量
这似乎很有效:
$page = is_front_page() ? \'page\' : \'paged\';
$query .= \'&paged=\' . get_query_var($page,1);