किसी सरणी में मेनू आइटमों की सूची प्राप्त करना


17

मैं वर्तमान में एक कस्टम थीम पर काम कर रहा हूं। इस विषय में, मेरे पास एक मेनू है जिसे मैंने उपयोग करके पंजीकृत किया है register-nav-menu, और फिर मैं wp_nav_menuफ़ंक्शन का उपयोग करके अपने वेब पेज पर मेनू प्रदर्शित कर रहा हूं ।

हालाँकि, मैं केवल मेनू आइटमों की सूची (वास्तविक मेनू आइटम नाम जो केवल wp-admin क्षेत्र में मेनू बनाने के लिए और किसी html के बिना उपयोग की गई थी) को पुनः प्राप्त करना पसंद करता हूं, और मैं उस आइटम की सूची को किसी सरणी में सहेजना चाहूंगा (अर्थात, इसे प्रदर्शित नहीं करें)।

तो, एक psuedo कोड इस तरह दिखेगा

$menu_items = get_list_of_items($name_of_menu); // $name_of_menu is the result of register-nav-menu, and get_list_of_items is the psuedo function
foreach ($menu_items as $item) {
    // do something with the item
}

क्या ऐसा करने का कोई तरीका है? धन्यवाद।

जवाबों:



49

जैसा कि @vancoder उल्लेख करता है, wp_get_nav_menu_items()जाने का रास्ता है, हालांकि मुझे लगता है कि बेहतर विस्तृत उत्तर भविष्य में लोगों के लिए अधिक उपयोगी होगा।

कहा गया फ़ंक्शन WP_Post Objectऑब्जेक्ट्स की एक सरणी देता है (ताकि आप एक तीर के साथ मानों तक पहुंच सकें, जैसे। $item->title)।

एक के लिए बुनियादी सेटअप, आप निम्नलिखित इस्तेमाल कर सकते हैं:

$menuLocations = get_nav_menu_locations(); // Get our nav locations (set in our theme, usually functions.php)
                                           // This returns an array of menu locations ([LOCATION_NAME] = MENU_ID);

$menuID = $menuLocations['primary']; // Get the *primary* menu ID

$primaryNav = wp_get_nav_menu_items($menuID); // Get the array of wp objects, the nav items for our queried location.

फिर आप उस $primaryNavचर पर उदाहरण के लिए लूप कर सकते हैं :

foreach ( $primaryNav as $navItem ) {

    echo '<li><a href="'.$navItem->url.'" title="'.$navItem->title.'">'.$navItem->title.'</a></li>';

}

1
मेरे लिए यह "झूठा" है
जॉन स्मिथ

4
क्या आप @JohnSmith को कॉपी-पेस्ट कर रहे हैं? आपको अपने मेनू की आईडी का उपयोग करना होगा ।
ब्रैड एडम्स

मुझे वॉकर क्लास का उपयोग करने की तुलना में यह बहुत आसान लगा। अच्छा है!
ली

2

मेनू की सरल सरणी प्राप्त करें।

फ़ंक्शंस में जोड़ें। एफपी

    function wp_get_menu_array($current_menu) {

    $array_menu = wp_get_nav_menu_items($current_menu);
    $menu = array();
    foreach ($array_menu as $m) {
        if (empty($m->menu_item_parent)) {
            $menu[$m->ID] = array();
            $menu[$m->ID]['ID'] = $m->ID;
            $menu[$m->ID]['title'] = $m->title;
            $menu[$m->ID]['url'] = $m->url;
            $menu[$m->ID]['children'] = array();
        }
    }
    $submenu = array();
    foreach ($array_menu as $m) {
        if ($m->menu_item_parent) {
            $submenu[$m->ID] = array();
            $submenu[$m->ID]['ID'] = $m->ID;
            $submenu[$m->ID]['title'] = $m->title;
            $submenu[$m->ID]['url'] = $m->url;
            $menu[$m->menu_item_parent]['children'][$m->ID] = $submenu[$m->ID];
        }
    }
    return $menu;
}

अपने हेडर और कॉल फ़ंक्शन पर जाएं

<?php
 $a = wp_get_menu_array('top-menu-header');                         
 print_r($a); exit;                       

?>

यह एक सभ्य जवाब है, हालांकि यह केवल 1 स्तर गहरा है।
हाइब्रिड वेब देव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.