অ্যারেতে মেনু আইটেমগুলির একটি তালিকা পুনরুদ্ধার করা হচ্ছে


17

আমি বর্তমানে একটি কাস্টম থিম নিয়ে কাজ করছি। এই থিমটিতে আমার একটি মেনু রয়েছে যা আমি ব্যবহার করে নিবন্ধভুক্ত register-nav-menuকরেছি এবং তারপরে আমি wp_nav_menuফাংশনটি ব্যবহার করে আমার ওয়েব পৃষ্ঠায় মেনুটি প্রদর্শন করছি ।

তবে আমি কেবল মেনু আইটেমের তালিকাটি পুনরুদ্ধার করতে চাই (কেবলমাত্র মেনু তৈরির জন্য ডাব্লুপি-অ্যাডমিন অঞ্চলে ব্যবহৃত মেনু আইটেমের নাম, এবং কোনও এইচটিএমএল ছাড়াই), এবং আমি আইটেমের তালিকাটি একটি অ্যারেতে সংরক্ষণ করতে চাই (যেমন, এটি প্রদর্শন না)।

সুতরাং, একটি 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
}

এটা করার কোন উপায় আছে? ধন্যবাদ।

উত্তর:


10

wp_get_nav_menu_items ঠিক আপনার প্রয়োজন অনুসারে প্রদর্শিত হবে। এটি মেনু অবজেক্টগুলির একটি অ্যারে প্রদান করে।


49

@ ভ্যানকোডার হিসাবে যেমন উল্লেখ করা হয়েছে, সেভাবে চলার 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
আপনি কি জনস্মিথকে কপি-পেস্ট করছেন? আপনাকে আপনার মেনুটির আইডি ব্যবহার করতে হবে ।
ব্র্যাড অ্যাডামস

আমি এটি ওয়াকার ক্লাস ব্যবহার করার চেয়ে অনেক সহজ খুঁজে পেয়েছি। সুন্দর!
লি

2

মেনুর সহজ অ্যারে পান।

Funferences.php এ যুক্ত করুন

    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 স্তর গভীর হয়।
হাইব্রিড ওয়েব দেব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.