2014-09-26 108 views
3

我在挪威语menu_no和英语menu_en中创建了一个菜单。如何以编程方式更改Wordpress中的菜单?

enter image description here

我可以看到我的主题仅支持一个菜单,但我没有使用更多的一个菜单,在一个时间规划。所以当用户选择英文时,我该如何改变活动菜单?

我还没有在Google上找到任何东西,我在nav-menu.php找不到正确的功能。

UPDATE
我发现我的问题很简单的解决方案。我只是有不同的想法。在我functions.php我加入这个代码:

add_action('init', 'register_menus'); 

function register_menus(){ 
    register_nav_menus(array(
     'menu_no' => 'Norwegian menu', 
     'menu_en' => 'English menu', 
    )); 
} 

,在我header.php文件我用这个代码:

global $lang; 

$args = array(
    'theme_location' => 'menu_'.$lang, 
    'container'   => false 
); 


<?php wp_nav_menu($args); ?> 

瞧。我将在稍后发布答案 - 如果没有其他人提出更好的主意。

+0

你使用的是一个插件?该插件可能有一个功能,您可以使用它来检查所选语言。然后,您可以在模板中使用该功能来显示相关菜单, – Alex 2014-09-26 09:47:51

+0

http://wordpress.stackexchange.com/questions/58164/assign-menus-to-theme-locations-with-theme-activation – davidcondrey 2014-09-26 09:49:47

+0

您可以使用qtranslate插件它会自动更改语言更改的菜单语言。 – 2014-09-26 09:50:38

回答

0

这是你如何做到这一点。

过去这段代码function.php文件

// Register Navigation Menus 
function custom_navigation_menus() { 
$locations = array(
    'first_menu' => __('Menu for English language', 'text_domain'), 
    'second_menu' => __('Menu for Other Language', 'text_domain'), 
); 
register_nav_menus($locations); 

} 

// Hook into the 'init' action 

add_action('init', 'custom_navigation_menus'); 

您可以自定义上面的代码。 现在使用wp_nav_menu函数显示任何你想要这样的

       <?php 
          wp_nav_menu(array(
           'menu'    => 'primary', 
           'theme_location' => 'first_menu', 
          ); 

          ?> 

          <?php 
          wp_nav_menu(array(
           'menu'    => 'secondary', 
           'theme_location' => 'second_menu', 
          ); 

          ?> 

可以显示在不同的地方每个菜单。现在你到你的选项菜单小学和中学

+0

“text_domain”的作用是什么? * wp_nav_menu *如何知道要使用哪个菜单?你在哪里创建菜单? – 2014-09-26 17:42:05

+0

text_domain:您可以用可选的主题名称替换它。 wp_nav_menu:你可以学习关于它的代码。它会从您选择的theme_location名称中知道。而对于你最后一个问题:我使用generatewp.com生成代码,但我完全知道代码 – Hujjat 2014-09-26 17:49:55

相关问题