使用快捷代码从wp_NAV_Menu列表项创建下拉菜单

时间:2019-03-28 作者:Brianne Duffy

我使用在线找到的以下函数将每个页面的各个导航项目呈现到页面:

function print_menu_shortcode($atts, $content = null) {
    extract(
        shortcode_atts(
            array(
                \'name\' => null, 
                \'class\' => null
            ), 
            $atts
        )
    );

    return wp_nav_menu(
        array(
            \'menu\' => $name, 
            \'menu_class\' => $class, 
            \'echo\' => false
        )
    );
}
我想在一个下拉菜单中显示这些导航链接,其中有一个标记为菜单的按钮,而不是将链接渲染为ul, 但我不知道如何访问wp_nav_menu.

任何帮助都是最好的,谢谢!

1 个回复
最合适的回答,由SO网友:Qaisar Feroz 整理而成

您可以使用wp_get_nav_menu_items() 它检索导航菜单的所有菜单项。您的短代码回调应该是这样的。

  function print_menu_shortcode($atts, $content = null) {
       extract( shortcode_atts(
            array(
                \'name\' => null, 
                \'class\' => null
            ), 
            $atts
        ));

        // Assuming $name contains slug or  name of menue
        $menu_items = wp_get_nav_menu_items($name); 

        // Sample Output. Adjsut as per your exact requirements.

        // Sample Output variable.
        $menu_dropdown  = \'\';

        if ($menu_items){

            $menu_dropdown  .= \'<select onChange="document.location.href=this.options[this.selectedIndex].value;">\';

            foreach( $menu_items as $menu_item ) {

               $link = $menu_item->url;
               $title = $menu_item->title;
               $menu_dropdown  .= \'<option value="\' . $link .\'">\'. $title . \'</option>\' ;

            }

             $menu_dropdown  .= \'</select>\';

        } else {
           $menu_dropdown  = \'<!-- no menu defined in location "\'.$theme_location.\'" -->\';
        }

           return $menu_dropdown ;
}
More Examples 使用此功能时。

相关推荐

如何将自定义选项添加到wp_Dropdown_Categories?

我需要将自定义选项添加到wp_dropdown_categories. 现在,整个万维网世界还没有找到解决方案。。。因此,我在这里要求一个解决方案……因为我真的无法想象WordPress的开发人员没有考虑到这将永远不需要,对吗?