使用URL重写为自定义帖子类型添加自定义URL

时间:2017-08-21 作者:Garland Briggs

我正在使用ACF制作一个多语言网站。我的自定义帖子URL必须同时使用和不使用/en/ 作为前缀。例如。mysite.com/posttype/any-slug/mysite.com/en/posttype/any-slug/ 必须显示相同的帖子。

我尝试在函数中使用此重写规则。php(以及它的一些变体),但很难让它工作:

add_action(\'init\', \'add_my_rule\');

function add_my_rule() {
    add_rewrite_rule(\'^en\\/posttype\\/[.+]$\',\'index.php?pagename=$matches[1]\',\'top\');
}
我注意到还有其他标题类似的问题,但案例似乎与此不同。

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

pagename 假设page 岗位类型。您需要在规则中使用自定义post类型查询变量。您可能还想检测到这是一个en, 您可以添加自己的重写标记来存储该标记,然后将其添加到规则中:

add_action(\'init\', \'add_my_rule\');

function add_my_rule() {
    add_rewrite_tag(\'%my_language%\', \'([^&]+)\');
    add_rewrite_rule(
        \'^en/posttype/([^/]*)?/?$\',
        \'index.php?posttype=$matches[1]&my_language=en\',
        \'top\'
    );
}

结束

相关推荐

模板层次结构标记-{slug}.php目录

什么时候tag-{slug}.php 是主题的根源,比如说wp-content/themes/p2/tag-{slug}.php, 遵守模板层次结构。然而,我有许多这样的自定义文件,只是无法将其放在主题根目录中。当我测试时p2/tag 和p2/custom-tag 目录,它不起作用。有什么见解吗?