关注这个问题How can I translate my navigation menu's LINKS with qtranslate on wordpress?我也尝试翻译其他语言的导航菜单 .
我做了第一个答案写的所有内容:
-
在
function.php
上包含该功能 -
在
header.php
文件上添加'walker' => new CustomLinkModifierWalker()
. -
将导航菜单的名称更改为
<!- -:en- ->HOME<!- -:- -><!- -:gr- ->ΑΡΧΙΚΗ<!- -:- ->
,将URL更改为/en|en|/|gr|
但是,翻译不起作用 . 菜单显示导航中的字符串,如 HOMEΑΡΧΙΚΗ
,链接为 /en|en|/|gr|
.
我究竟做错了什么?或者还有另一种翻译菜单的方法吗?
在WordPress 4.0.1下
UPDATE
在没有上述代码的情况下将名称更改为 [:en]HOME[:el]ΑΡΧΙΚΗ
会使翻译起作用,但我仍然无法使URL工作 .
UPDATE 2
和navmenu代码:
希腊语:
<ul class="menu" id="nav-menu">
<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-1091"><a href="/">ΑΡΧΙΚΗ</a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-1092"><a href="/#our-company">ΣΧΕΤΙΚΑ</a></li>
</ul>
对于英语:
<ul class="menu" id="nav-menu">
<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-1091"><a href="/">HOME</a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-1092"><a href="/#our-company">ABOUT</a></li>
</ul>
UPDATE 3
我尝试添加包含标记的完整路径的URL,如下所示:
[:en]http://www.mydomain.gr/en[:el]http://www.mydomain.gr
但是在我点击"save button"后,网址输入为空 . 它不保存url路径 . UPDATE 4
我在functions.php和header.php上的行添加代码 . 现在我在管理页面上有一个可选的URL . 所以,我删除了URL并添加了可选项,如下所示:
<!--:en-->/en<!--:--><!--:el-->/<!--:-->
然后我在header.php上添加了代码:
<?php $defaults = array(
'theme_location' => 'other',
'container' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '<ul id="nav-menu" class="%2$s">%3$s</ul>',
'depth' => 0,
'walker' => ''
);
wp_nav_menu( $defaults );
wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu' , 'walker' => new qTranslate_Menu_Walker() ) );
?>
</div>
问题是这种格式的链接: /en/#about
工作但是这种格式的链接 /en/blog
不起作用并重定向到默认语言 .
5 回答
试图找出在菜单上保存URL字段时是否有一个过程调用过程,看起来WordPress正在自行执行此操作而不留下取消过滤的可能性 .
因此,考虑到这一点,我通过使用名为Optional URL的额外字段来提供解决方案,如果此字段填充了某些内容(未过滤的内容),则WordPress将使用该字段而不是正常情况下的URL字段 .
所以在最底层的functions.php上请放置此代码,或者将其放在另一个脚本上并将其包含在函数中:
比编辑你的header.php或你在哪里调用
wp_nav_menu
函数并将这个新的walker作为参数传递:qTranslate_Menu_Walker
是新的walker,用可选URL替换了URLPS:使用
<!--:en-->These language tags instead<!--:-->
qtranslate很长一段时间都有这个问题,如果你有一个链接你的实现是有效的,但如果你有不同语言的不同链接,这将不起作用 . 解决此问题的方法非常简单,您只需添加不同语言的菜单,在 Headers 中,您可以根据用户选择的当前语言调用这些菜单 .
编辑:
使用单个菜单实现此功能的另一种方法是将此代码添加到functions.php中
嗨Anastasios Ventouris,
我在wordpress设置中检查了新插件,有一个名为
"Transposh Translation Filter"
的插件 . 它将在我的wordpress中正常工作所有在wordpress网站中加载的内容,包括菜单,自定义菜单链接和所有这些东西在我的wordpress中正常工作 .您刚刚在管理员端添加语言名称,然后转到小部件方面添加此小部件,以显示您的翻译插件 .
现在你选择非洲语言,它会用这种语言转换你的网站数据,并在你的屏幕上显示正确的格式和输出 .
试试这个插件,让我知道你的观点和想法 .
mqTranslate已被弃用,转而使用qTranslate X.我强烈建议您使用qTranslate X,而不是找到弃用的插件的解决方案 . 它更加用户友好,并具有其他功能 .
您可以尝试此更新代码..
这是用于菜单翻译的更新代码 . 翻译你的网站使用mqTranslate而不是qTranslate的另外一件事都有相同的功能,但mqTranslate有更多的wordpress升级版.....
我希望这能帮到您