我有这个网站:
example.com/watches(watch是自定义帖子类型)
有两种语言:EN(默认语言),GR。
当我更改为GR时(在页面上示例说明/ 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/rolex 和 example.com/el/taxwatches/rolex-el 均有效。
编辑2:据我所知,WPML采用了slu ,,有没有办法改变它,所以需要名字?
答案 0 :(得分:1)
好的,对于任何有多语言网站问题的人来说 - 但是想要在网址中使用“相同的slu”(永远不会是相同的slu - - 但看起来像那样)请阅读以下内容。
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
会在您访问页面/帖子时按下每个语言按钮时创建的(并且您可以操作它)的网址。
我没有写完整的解决方案,因为这实际上取决于你想做什么。例如,上面的代码帮助我实现删除“税”,如果在网址中找到。
答案 1 :(得分:0)
这个答案提供了另一种方法来实现具有相同slug的多种语言
Polylang with Polylang Slug这两个插件可以做