2012-03-14 11 views
6

すべて、 からメニューの値を取得します。メニューIDに基づいて、そのメニューにあるページと選択されたメニューIDに基づく対応するナビゲーションラベルを取得したいと思います。それをどうやって行うことができますか?私が作成された定義されたWordPressのメニューのすべてを取得するには、次のコードを使用していますWordpressの

私は実際にこの発見:$オプション[「menu_choice」]その例で

は、選択したメニューのIDですが、私が本当に希望してパーマリンク値を与えることです。私はこれを得ることができますか?

事前にお問い合わせいただきありがとうございます。 wp_get_nav_menu_items()機能を使用してメニュー内の各項目のタイトルとURLにアクセス

+1

Wordpress専用のStackExchangeサイトがありますか? http://wordpress.stackexchange.com –

+0

この回答を確認http://stackoverflow.com/a/37959604/1153703 –

答えて

2

$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

は、あなたが特定のメニューを表示したいですか?単純な関数wp_nav_menuを使用して、あなたの望ましいmenu-IDの引数を渡すのはなぜですか?次の例では、menu_idを$ menu_IDに置き換えてください:

<?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

これはまさにあなたが望むものです。

$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); 
} 

ここで、$ menu_itemsは、すべてのメニュー項目のすべてのデータを含むオブジェクトです。したがって、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 
    } 
} 

あなたは、公式ウェブサイト上で、そのようorderbyのオプションとして、この質問のためのより多くの興味深い情報を見つけることができます:http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items

1

を、あなたは、この機能を使用して、それをプルする必要がありますポストのIDを取得するには:

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

これ以外の場合は、wordpressがメニューに使用するnav_menuカスタムタイプの投稿になります。 $ urlと同じgoeseですが、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> 
関連する問題