我的wordpress网站的多语言菜单

时间:2017-07-05 11:03:27

标签: wordpress menu multilingual

我有一个单词新闻网站,我需要添加多语言。我添加了WPML插件,但我不喜欢如何显示语言菜单。我在header.php中手动添加了两种语言(En,It)。 反正有没有添加脚本所以这两个“按钮”是我的多语言菜单?

Thanx in adv。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用Twig模板引擎制作自定义语言切换器。

以下是该主题的全面WPML documentation

使用文章中的模板示例,您可以将其修改为:

<ul>
   {% for code, language in languages %}
<li class="{{ language.css_classes }} my-custom-switcher-item">
           <a href="{{ language.url }}">
           {{ language.code }}
           </a>
</li>
{% endfor %}
</ul>

答案 1 :(得分:0)

WPML非常擅长自动添加切换器。为此,您需要通过WPML中的设置选项告诉它如何以及在何处显示切换器。你应该完成这些设置,以使sute WPML能够正常运行。

但是,您可以使用以下代码手动添加它。请记住,您可能需要手动更改菜单名称以匹配主题名称。

// Filter wp_nav_menu() to add additional links and other output
// Show only other language in language switcher
// Use the new filter: https://wpml.org/wpml-hook/wpml_active_languages/ 
add_filter('wp_nav_menu_items', 'new_nav_menu_items', 10, 2);
function new_nav_menu_items($items, $args) {
    // uncomment this to find your theme's menu location
    //echo "args:
<pre>"; print_r($args); echo "</pre>

";

    // get languages
    $languages = apply_filters( 'wpml_active_languages', NULL, 'skip_missing=0' );

    // add $args->theme_location == 'primary-menu' in the conditional if we want to specify the menu location.

    if ( $languages && $args->theme_location == 'primary') {

        if(!empty($languages)){

            foreach($languages as $l){
                if(!$l['active']){
                    // flag with native name
                    $items = $items . '
<li class="menu-item"><a href="' . $l['url'] . '"><img src="' . $l['country_flag_url'] . '" height="12" alt="' . $l['language_code'] . '" width="18" /> ' . $l['native_name'] . '</a></li>

';
                    //only flag
                    //$items = $items . '
<li class="menu-item menu-item-language"><a href="' . $l['url'] . '"><img src="' . $l['country_flag_url'] . '" height="12" alt="' . $l['language_code'] . '" width="18" /></a></li>

';
                }
            }
        }
    }

    return $items;
}