个性化阅读
专注于IT技术分析

如何访问子菜单的描述?

好吧, 我试图用下面的代码获取菜单项和子菜单的描述, 但我无法获取它。

我正在尝试获得”关于我们”的描述和”我们的董事会工作人员”的描述:

关于我们以及我们的董事会和员工

由于菜单项(关于我们)运行良好, 但由于某种原因, 子菜单(我们的董事会和员工)不包含信息描述, 而仅包含ID, URL和标题, 我已经尝试了var_dump()子菜单对象(如你在下面的代码中看到的), 但没有它。

function get_menu_section_description($sectionUrl){     

    $menu = wp_get_menu_array("menu");

    $desc = "";

    foreach ($menu as $key => $item){
        $arr = $item['url'];
        // var_dump($item);
        if ($sectionUrl == $arr[0]) {
            $desc = $item['description'];
        }

        if(sizeof($item['children']) > 0){
            foreach ($item['children'] as $key => $children){
                // var_dump($children);
                $arr2 = $children['url'];
                if ($sectionUrl == $arr2) {
                    $desc = $children['description'];
                }
            }
        }   }   return $desc; }

有谁知道为什么没有说明项, 如何激活它或可能的解决方案?提前致谢。


#1


从WordPress 3.0开始, 你不再需要自定义Walker!

有walker_nav_menu_start_el过滤器, 请参阅https://developer.wordpress.org/reference/hooks/walker_nav_menu_start_el/

例子

 function add_menu_description($item_output, $item, $depth, $args) {
        if (strlen($item->description) > 0 ) {
            // append description after link
            $item_output .= sprintf('<span class="description">%s</span>', esc_html($item->description));

            // insert description as last item *in* link ($input_output ends with "</a>{$args->after}")
            //$item_output = substr($item_output, 0, -strlen("</a>{$args->after}")) . sprintf('<span class="description">%s</span >', esc_html($item->description)) . "</a>{$args->after}";
        }

        return $item_output;
    }
    add_filter('walker_nav_menu_start_el', 'add_menu_description', 10, 4);

#2


我几天后发现了一个解决方案, 所以可能对某人有帮助, 我遇到的问题是调用菜单wp_get_menu_array()的功能, 我不得不在子菜单中添加说明, 仅是:

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]['classes']     =   $m->classes;
            $menu[$m->ID]['description']     =   $m->description;
            $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;
            $submenu[$m->ID]['description']  =   $m->description; //Line added;
            $menu[$m->menu_item_parent]['children'][$m->ID] = $submenu[$m->ID];
        }
    }
    return $menu;

}
赞(0) 打赏
未经允许不得转载:srcmini » 如何访问子菜单的描述?
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏