主页分页-其他页面不重定向到主页模板

时间:2017-01-27 作者:Codesmith

我知道有人问过类似的问题,但似乎没有一个能回答这个问题。

我已经在主页上设置了一个post循环小部件。它有分页功能,但每当转到第一页以外的任何一页时,我都会收到一个令人讨厌的404。原因是,当URL获取/page/2/ 或a/?page=2 在其中,WordPress不再将调用定向到主页模板。相反,它似乎假设有一个具有该名称的页面,但它找不到它,因此它抛出了一个404。

因此,我的问题是,WordPress什么时候/为什么决定它不是主页?为什么?我如何强制它继续使用主页模板?(即front page.php)

更新

看来,在将我的主页显示从“你的最新帖子”(这与主题/子主题无关,因为主题会丢弃任何内容,并在活动时用其小部件替换)切换到“静态页面”(我选择了一个随机页面,它无论如何都不会显示)之后,它现在没有给出404,而是停留在第1页,即使URL中显示了/page/2(另一个常见的报告错误)。

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);

SO网友:Alexander Holsgrove

您需要获取/page/n 并将其传递到自定义循环中:

$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;    
$the_query = new WP_Query( \'posts_per_page=3&paged=\' . $paged ); 
您可以在此处阅读更多内容:https://codex.wordpress.org/Pagination

相关推荐

Ajax Filtering Pagination

我知道这是一个常见的问题,但我找不到解决办法。我在用户点击复选框时进行了ajax过滤。在用户单击分页之前,一切都正常。当然,我们现在使用的是管理ajax。php页面和分页链接不工作。这是代码。HTML复选框:<input type=\"checkbox\" id=\"telegram_chk\" checked> <input type=\"checkbox\" id=\"twitter_chk\" checked> <input type=\"checkbo