我需要菜单翻译方面的帮助。我为两个页面"着陆"和"博客"创建了两个不同的菜单。我的代码工作得很好,直到我开始使用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())); ?>
我发现这比注册菜单更容易。