我创建了一个自定义的帖子类型,我们称之为“产品”。该网站也是双语的,没有任何插件,我将本地化页面放在父语言页面下,例如:
英语第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,以及如何阻止它变成前者。