我一直有一个严重且完全无法解决的分页问题。
然而,我确实注意到了这个有趣的观点:我搜索像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
答案 0 :(得分:2)
所以这就是我提出来的......我们不妨称之为 hack 或解决方案,因为如果这确实是一个错误我不知道我我正在处理(来自wordpress本身)或者只是我主题代码中一个完全隐藏的问题。
以下功能会过滤“paginate_links()
”功能,并实现此目的:
我看到paged
变量在搜索页面上随机生成404,但在存档和分类页面上正常工作。所以,我们检查一下。 if_search()
,我们会做出改变......
如果这是一次搜索,我们会使用正则表达式(或简单地将paged
字符串替换为page
来获取可能的页面#destination,具体取决于固定链接结构。我们使用{{1删除错误的变量,remove_query_var()
放置工作的变量。
这样做是因为在这种奇怪的情况下,add_query_var()
总能产生正确的结果。
然后我们返回编辑过的目的地链接,生活很美好。
以下功能:
page
还要感谢我使用正则表达式获得的一些帮助:PHP Regular Expression Help: A quick way to extract the 2 from "page/2/"