gpt4 book ai didi

wordpress - WPML 相同的 slug(url) 不同的语言

转载 作者:行者123 更新时间:2023-12-02 22:36:32 25 4
gpt4 key购买 nike

我有这个网站:

example.com/watches( watch 是自定义帖子类型)

有两种可用语言:EN(默认语言)、GR。

当我更改为 GR 时(在页面 example.com/watches 上时) 它重定向到 example.com/el/watches 这是正确的。

当我在 example.com/watches/rolex 上时,我尝试更改语言,它会重定向到 example.com/el/taxwatches/rolex-el 但我希望它只是 example.com/el/watches/rolex/

taxwatches 是我的自定义分类法。

rolex-el 是该分类中该术语的别名。

有人遇到过这样的问题吗?

我尝试再次保存永久链接并检查我的 WMPL 设置,但我看不出有什么问题。

编辑1:如果我手动转到example.com/el/watches/rolex,它将正常工作。example.com/el/watches/rolexexample.com/el/taxwatches/rolex-el 都可以。

编辑2:据我了解,WPML 采用段头,有没有办法更改它,以便它采用名称?

最佳答案

好的,对于任何在使用多语言网站时遇到问题 - 但希望在网址中拥有“相同的 slugs”(永远不会是相同的 slugs - 但看起来像那样)的人,请阅读以下内容。

WPML 使用从 WordPress 核心结构创建的 slugs - 不能有两个名称完全相同的 slugs。如果默认语言是 EN 并且您有辅助语言(在我的例子中是 GR),那么一个 slug 将是“myslug”,另一个是“myslug-gr”(您可以通过 WPML 设置自定义此“-gr”)。

functions.php中,您可以过滤创建语言切换器时触发的“wpml_ls_filter”函数。

代码如下:

add_filter('icl_ls_languages', 'wpml_ls_filter');

function wpml_ls_filter($languages) {

foreach ($languages as $lang_code => $language) {

$mTempString = $languages[$lang_code]['url'];

echo $mTempString; // HERE

// If "tax" is found in that string, replace it with "" - remove it.
if (strpos($mTempString, "tax") !== false) {

$languages[$lang_code]['url'] = str_replace("tax", "", $mTempString);
}

}
return $languages;
}

上面的 echo 将向您显示每次访问页面/帖子时按下每种语言按钮时创建的 URL(并且您可以操作它)。

我还没有写出完整的解决方案,因为这实际上取决于您想要做什么。例如,上面的代码帮助我删除了在网址中找到的“tax”。

关于wordpress - WPML 相同的 slug(url) 不同的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42577302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com