paginate_links()输出“paged =”链接而不是“page =”

时间:2013-04-23 04:18:16

标签: wordpress function pagination http-status-code-404

我一直有一个严重且完全无法解决的分页问题。

然而,我确实注意到了这个有趣的观点:

我搜索像cute这样的关键字:

?s=cute&submit=Search&post_type=image&paged=2

...是链接所在的地方。 " Paged =" 在随机页面上显示404。但是,如果我将网址修改为 page =

?s=cute&submit=Search&post_type=image&page=2

每个页面目的地都有效,给我带来欢乐,但分页标签列表始终为0(不反映当前页面)。

我觉得我正在玩一个贝壳游戏"使用代码和设置,使用wordpress bamboozling me。

问题缩小为:

如何在每种情况下输出&page=?相反,如果&paged=应该如此,那么如何在没有404的情况下让它工作?!?!

这是我已经处理了近3个月的问题。人们很难回答。


更新:

尝试处理破坏分页的URL中的paged变量,我创建了一个过滤器,只需将其替换为page即可。

function symbiostock_pagination_mod( $args ){

    $args = str_replace('paged=', 'page=', $args);

    return $args;
    }

add_filter( 'paginate_links', 'symbiostock_pagination_mod', 1 );

看起来好像是个好主意!但是每次新点击都会发生这种情况:

?s=cute&post_type=image&page=2&page=2

?s=cute&post_type=image&page=2&page=3

那么这个被改变了,为什么?


更新

我不确定我是否是唯一遇到此问题的人,但我确实解决了这个问题(至少对我自己而言),你可以看到下面的解决方案。还要感谢给予的帮助。 :d

1 个答案:

答案 0 :(得分:2)

所以这就是我提出来的......我们不妨称之为 hack 解决方案,因为如果这确实是一个错误我不知道我我正在处理(来自wordpress本身)或者只是我主题代码中一个完全隐藏的问题。

以下功能会过滤“paginate_links()”功能,并实现此目的:

  1. 我看到paged变量在搜索页面上随机生成404,但在存档分类页面上正常工作。所以,我们检查一下。 if_search(),我们会做出改变......

  2. 如果这是一次搜索,我们会使用正则表达式(或简单地将paged字符串替换为page来获取可能的页面#destination,具体取决于固定链接结构。我们使用{{1删除错误的变量,remove_query_var()放置工作的变量。

    这样做是因为在这种奇怪的情况下,add_query_var()总能产生正确的结果。

  3. 然后我们返回编辑过的目的地链接,生活很美好。

  4. 以下功能:

    page

    还要感谢我使用正则表达式获得的一些帮助:PHP Regular Expression Help: A quick way to extract the 2 from "page/2/"