使用自定义帖子重写固定链接

时间:2011-11-26 作者:Ahmed Nuaman

我创建了一个自定义的帖子类型,我们称之为“产品”。该网站也是双语的,没有任何插件,我将本地化页面放在父语言页面下,例如:

英语第1页第2页第3页法语第1页第2页第3页,依此类推。这意味着我的URL如下/%language%/%pagename%, eg公司/en/page_1.

我的自定义帖子有双语字段,可以进行简单的本地化,但问题是如何将正确的语言传递到他们的公共页面。例如,我列出自定义帖子的页面以所有语言存在,并创建一个URL,如/%language%/parent_page/%custom_post_name%, eg公司/en/parent_page/a_custom_product.

奇怪的是,链接工作得很好,但WordPress并没有重写URL,使其成为/%post_type%/%custom_post_name%/ eg公司/product/a_custom_product 由于我们现在失去了语言部分,我无法将其本地化。

我已经为过滤器创建了一个函数generate_rewrite_rules:

global $wp_rewrite;

$wp_rewrite->add_rewrite_tag( \'%lang%\', \'(.+?)\', \'lang=\' );

$n  = array(
    \'([\\w]{2})/products/([^/])/?\'   => \'index.php?pagename=$2&lang=$1\'
);

return $n + $r->rules;
我还刷新了permalinks,还有别的什么,我只是想知道为什么WordPress会重写URL,以及如何阻止它变成前者。

1 个回复
最合适的回答,由SO网友:Ahmed Nuaman 整理而成

哦,天哪,原来我需要修改我的正则表达式,第二个匹配只匹配一个字符。应该是:

\'([\\w]{2})/the-wines/([^/]+)/?\' => \'index.php?pagename=$matches[2]&lang=$matches[1]\'

结束

相关推荐

Custom permalinks

我们有一个自定义类型music./music/ /music/post-name/ 此外,我们还有一个类似标签的分类法genres. 其URL为:/music-genres/genre-name/ 我尝试创建如下URL:/music/ /music/post-name/ /music/genres/ /music/genres/genre-name/ /music-genres/ 应替换为/music/genres/.最后,我们应该得到如下url