2012-03-14 12 views
6

wszystkim Używam poniższy kod, żeby uzyskać wszystkie zdefiniowane menu wordpress, które są tworzone:Get wartości menu z WordPress

$menus = wp_get_nav_menus(); 

wiem identyfikator menu chcę używać. Na podstawie identyfikatora menu chciałbym uzyskać strony znajdujące się w tym menu i odpowiednią etykietę nawigacji na podstawie wybranego identyfikatora menu. Jak mogę to zrobić?

I rzeczywiście odkrył to:

W tym przykładzie opcje $ [ 'menu_choice'] jest wybrany ID menu, ale to, co naprawdę chciałbym jest dać wartość odnośnika. Czy mogę to z tego wyciągnąć?

Dzięki za pomoc z góry!

+1

Czy wiesz, że istnieje strona StackExchange poświęcona Wordpress? http://wordpress.stackexchange.com –

+0

sprawdź tę odpowiedź http://stackoverflow.com/a/37959604/1153703 –

Odpowiedz

2

Aby uzyskać dostęp tytuł i adres URL każdej pozycji w menu używając wp_get_nav_menu_items() funkcję:

$menu_items = wp_get_nav_menu_items($options['menu_choice']); 
foreach ((array) $menu_items as $key => $menu_item) { 
    $title = $menu_item->title; 
    $url = $menu_item->url; 
} 
2

chcesz wyświetlić konkretną menu? dlaczego nie skorzystać z prostszej funkcji, wp_nav_menu, i przekazać argumenty dotyczące pożądanego identyfikatora menu? po prostu zamień identyfikator menu_id na $ menu_ID w następnym przykładzie:

<?php 
$menu_args = array('menu' => $menu_ID); 
wp_nav_menu($menu_args); 
?> 
+0

$ menu_ID = '195'; $ menu_args = array ("menu" => $ menu_ID); wp_nav_menu ($ menu_args); –

7

Dokładnie tego chcesz.

$menu_name = 'menu-id'; //e.g. primary-menu; $options['menu_choice'] in your case 

if (($locations = get_nav_menu_locations()) && isset($locations[$menu_name])) { 
    $menu = wp_get_nav_menu_object($locations[$menu_name]); 
    $menu_items = wp_get_nav_menu_items($menu->term_id); 
} 

Teraz $ menu_items jest obiektem zawierającym wszystkie dane dla wszystkich pozycji menu. Dzięki temu można pobrać potrzebne dane za pomocą pętli foreach.

foreach ($menu_items as $menu_item) { 
    $id = $menu_item->ID; 
    $title = $menu_item->title; 
    $url = $menu_item->url; 

    if ($parent_id = $menu_item->menu_item_parent) { 
     //the element has a parent with id $parent_id, so you can build a hierarchically menu tree 
    } 
    else { 
     //the element doesn't have a parent 
    } 
} 

Można znaleźć ciekawe informacje na ten temat, takich jak opcje orderby, na oficjalnej stronie internetowej: http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items

1

Aby uzyskać identyfikator pocztowy następnie trzeba będzie ciągnąć go za pomocą tej funkcji:

$ id = get_post_meta ($ menu_item-> ID, '_menu_item_object_id', true);

W przeciwnym razie id będzie typem postu nav_menu używanym przez wordpress dla menu. Taki sam adres dla adresu $ url, możesz go wywołać za pomocą get_permalink ($ id);

0
<pre> 
$menu_ID = '195'; // 195 is a menu id this id you can see 
http://example.com/wp-admin/nav-menus.php?action=edit&menu=195 
$menu_args = array('menu' => $menu_ID); 
wp_nav_menu($menu_args); 
</pre> 
Powiązane problemy