WordPress,如何使用Polylang正确翻译两个不同的菜单


WordPress, how translate two different menus correctly with Polylang?

我需要菜单翻译方面的帮助。我为两个页面"着陆"和"博客"创建了两个不同的菜单。我的代码工作得很好,直到我开始使用Polylang进行翻译。

查找图像

这是菜单代码:

<?php
    if ( is_page( 'landing' ) ) {
        wp_nav_menu( array(
          'menu'        => 'landing',
          'menu_class'  => 'nav navbar-nav darka',
          'container'   => 'false',
        ) );
    } else {
        wp_nav_menu( array(
          'menu'        => 'blog',
          'menu_class'  => 'nav navbar-nav darka',
          'container'   => 'false',
        ) );
    }
  ?>

此代码创建的菜单,如果帮助:

add_theme_support( 'menus' );
function register_theme_menus() {
  register_nav_menus(
    array(
      'landing-menu'    => __('Landing Menu'),
      'blog-menu'       => __('Blog Menu')
    )
  );
}
add_action('init', 'register_theme_menus');

上发:

我解决了这个问题!

函数.php

    <?php
add_theme_support( 'menus' );
// create menu
function register_theme_menus() {
  register_nav_menus(
    array(
      'primary' => __('Primary Menu', 'nameyourtheme'),
      'second' => __('Second Menu', 'nameyourtheme')
    )
  );
}
add_action('init', 'register_theme_menus');
?>

标头.php

    <?php
if (is_front_page()) {
  wp_nav_menu( array(
      'theme_location'        => 'primary',
      'menu_class'  => 'nav navbar-nav darka',
      'container'   => 'false',
    ) );
}  
else {
  wp_nav_menu( array(
    'theme_location'        => 'second',
    'menu_class'  => 'nav navbar-nav darka',
    'container'   => 'false',
  ) );   
}
?>

我在翻译多个菜单时遇到了同样的问题,但我的情况有点不同。在我的情况下,两个菜单位于标题中的主页上。

函数.php

'top_menu' => __('Top Menu', 'nameyourtheme')

这是我最初的主题菜单。然后我删除了下划线,如下所示:

'topmenu' => __('Top Menu', 'nameyourtheme')

它奏效了。当然,菜单名称的更改应应用于

标头.php

'theme_location' => 'topmenu',

我的结论是,Polylang 只能识别一个单词的菜单名称。

不确定这是否有帮助,但我通常不是注册菜单,而是这样命名我的菜单:

Menu fr_CA
Menu en_US

然后,网站可以使用wordpress get_locale()简单地用一个行加载正确的一个。

<? wp_nav_menu(array('menu' => 'Menu '.get_locale())); ?>

我发现这比注册菜单更容易。