当我使用分页时WordPress重写我的URL

时间:2011-06-29 作者:beR-

我刚刚创建了一个重写规则,以便在我的页面音乐中集成分页(显示自定义post\\u类型的“音乐”),以便:1。显示长音乐播放列表中的特定页面。2、在此页面中,播放指定曲目

以下是分页规则:

add_rewrite_rule(\'music/page/([0-9])+/([^/]+)/?\', \'index.php?pagename=music&paged=$matches[1]&trackid=$matches[2]\', "top");

但现在当我进入时:http://carbonpaper-dev.imperatorium.org/music/page/2/track-2442

Wordpress重写我的链接,重复/page/2/:http://carbonpaper-dev.imperatorium.org/music/page/2/track-2442/page/2/

我搜索解决方案以保留第一个URL。我尝试使用get\\u rewrite\\u permalink()函数,但不正常。。

有什么建议吗?

误码率-

博客正在测试阶段,很抱歉给您带来不便。。。

3 个回复
SO网友:Stephen Harris

我认为,这个问题与重写规则关系不大,从表面上看,重写规则应该是可行的,而与WordPress的规范重定向关系更大。

基本上,当WordPress收到url时,它会将其解释为一个查询。然后再次查看url以检查url是否“正确”(或规范)。例如,它可能有多余的正斜杠等等。

如果url被认为“不正确”-您将被重定向到“正确”的url。其思想是,您没有多个指向同一内容的url(它们都被重定向到一个规范url)。

负责此操作的文件是/wp-includes/canonical.php. 尤其是功能redirect_canonical() 连接到template_redirect 行动这个redirect_canonical() 函数有自己的筛选器:

add_filter(\'redirect_canonical\', \'wpse50912_redirect_canonical\',10,2)
function wpse50912_redirect_canonical($redirect_url, $requested_url){

     //Check the requested url is an url for your (paginated) music archive
     //Return the url you want in the address bar.

     return $redirect_url;
}
您可以通过取消挂钩来禁用规范化redirect_canonical 来自的函数template_redirect 钩或者可以使用redirect_canonical. 无论哪种方式,我都建议暂时禁用,以验证这是原因。

SO网友:Yoav Aner

如果不仔细看一下您的代码,很难说出来,但我有一种隐秘的怀疑,它可能与您使用page 关键词。也许在其他地方有一条规则可以找到它。

一些快速测试可能值得一试:

更改\'music/page/([0-9])...\'music/pg/([0-9])... (或除此之外的任何内容page)bottom 而不是top 在wordpress之后处理规则

SO网友:Olaf

我做了很多关于改变page 变量或试图删除它。我了解到Wordpress只能在URL末尾使用页面标记。您可以更改此行为,但需要更改Wordpress核心文件中的代码。你的问题和我试过的不完全一样,但它是关于同一个“问题”。很抱歉,你需要使用Wordpress创建的URL。

顺便问一下,为什么你需要一个不同的URL结构?

结束

相关推荐

Pagination & get_pages?

我有一个页面,其中列出了此特定页面的子页面,但我想为其添加分页,如何才能做到这一点?这是获取页面的代码<ul id=\"products\" class=\"items-thumbs\"> <?php $the_id = get_the_ID(); $args = array( \'child_of\' => $the_id,