【问题标题】:WPML same slug(url) different languageWPML 相同的 slug(url) 不同的语言
【发布时间】:2021-09-29 04:10:39
【问题描述】:

我有这个网站:

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

有两种可用语言: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 采用了 slug,有没有办法更改它以便采用名称?

【问题讨论】:

    标签: wordpress wpml


    【解决方案1】:

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

    WPML 使用从 wordpress 核心结构创建的 slug - 您不能拥有两个名称完全相同的 slug。如果默认语言是 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”(如果在 url 中找到)。

    【讨论】:

    • @BGBruno 您将不得不转到 Wordpress 主题的文件 > functions.php
    【解决方案2】:

    此答案提供了一种替代方法来实现具有相同 slug 的多种语言

    Polylang 和 Polylang Slug 这两个插件可以做到

    https://wordpress.org/plugins/polylang/

    https://github.com/grappler/polylang-slug/

    【讨论】:

      【解决方案3】:

      您可以使用我的插件,它基于最新的 Polylang Pro 模块,可以满足您的需求:https://github.com/lufton/polylang-share-slug

      【讨论】:

        猜你喜欢
        • 2013-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        • 1970-01-01
        • 2012-04-29
        • 1970-01-01
        相关资源
        最近更新 更多