2014-09-26 107 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

相關問題