当前位置: 首页 > 知识库问答 >
问题:

字压菜单项子项

边明煦
2023-03-14

我正在努力为WordPress项目创建自定义菜单。我使用以下函数clean_custom_menus()清理了菜单的标记。我目前遇到的问题是弄清楚如何将类添加到#menu_item(如果它具有父菜单项)。我的菜单设置如下:

  • 主要项目
  • 主要项目
    • 子项目
    • 子项目

    我知道从代码的角度来看,我需要检查< code>$menu_item是否有子元素。在查看WordPress文档时,我看到有一个名为< code>$has_children的函数。但是我不知道确切的语法。任何帮助都将不胜感激。

    在我functions.php

    // custom menu example @ https://digwp.com/2011/11/html-formatting-custom-menus/
    function clean_custom_menus() {
        $menu_name = 'primary'; // specify custom menu slug
        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_list = '<nav role="navigation">' ."\n";
            $menu_list = '<div class="nav-wrapper">' . "\n";
            $menu_list .= "\t\t\t\t". '<ul id="nav-mobile" class="left hide-on-med-and-down">' ."\n";
            foreach ((array) $menu_items as $key => $menu_item) {
                $title = $menu_item->title;
                $url = $menu_item->url;
    
                //I would like to add a class to the li if it has a parent
    
                $menu_list .= "\t\t\t\t\t". '<li><a href="'. $url .'">'. $title .'</a></li>' ."\n";
            }
    
    
    
            $menu_list .= "\t\t\t\t". '</ul>' ."\n";
            $menu_list .= "\t\t\t\t". '</div>' ."\n";
            $menu_list .= "\t\t\t". '</nav>' ."\n";
        } else {
            // $menu_list = '<!-- no list defined -->';
        }
        echo $menu_list;
    }
    

    编辑

    这是我更新的函数.php

    // custom menu example @ https://digwp.com/2011/11/html-formatting-custom-menus/
    function clean_custom_menus() {
        $menu_name = 'primary'; // specify custom menu slug
        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_list = '<div class="nav-wrapper">' . "\n";
            $menu_list .= "\t\t\t\t". '<ul id="nav-mobile" class="left hide-on-med-and-down">' ."\n";
            foreach ((array) $menu_items as $key => $menu_item) {
                $title = $menu_item->title;
                $url = $menu_item->url;
    
                if ( $menu_item->post_parent != 0 ) {
                    $menu_list .= "\t\t\t\t\t". '<li class="dropdown"><a href="'. $url .'">'. $title .'</a></li>' ."\n";
                }
                else {
                    $menu_list .= "\t\t\t\t\t". '<li><a href="'. $url .'">'. $title .'</a></li>' ."\n";
                }
            }
            $menu_list .= "\t\t\t\t". '</ul>' ."\n";
            $menu_list .= "\t\t\t\t". '</div>' ."\n";
        } else {
            // $menu_list = '<!-- no list defined -->';
        }
        echo $menu_list;
    

    我的问题是如何在if语句(if($menu_item-

    这是当前标记的样子:

    <ul>
     <li>Menu</li>
     <li class="dropdown">Sub Item</li>
     <li class="dropdown">Sub Item</li>
     <li class="dropdown">Sub Item</li>
     <li>Menu</li>
     ...
    </ul>
    

    这就是我希望标记的方式:

    <ul>
     <li>Menu</li>
     <li>
        <a class="dropdown-button" href="#!" data-activates="dropdown1">Dropdown<i class="material-icons right">arrow_drop_down</i></a>
        <ul id="dropdown1" class="dropdown-content">
         <li><a href="#!">one</a></li>
         <li><a href="#!">two</a></li>
         <li class="divider"></li>
         <li><a href="#!">three</a></li>
        </ul>
      </li>
      ...
    </ul>
    

    我认为逻辑应该是if语句中的while循环或另一个foreach循环。


共有1个答案

韦望
2023-03-14

这会有帮助吗?

if ( $menu_item->post_parent != 0 ) {
    // yout post has a parent
}
 类似资料:
  • 我有一个侧边栏,带有子菜单项。这些子段落始终显示在离开区块的顶部。请告诉我如何使子菜单项相对于侧边栏中父菜单项的高度显示在中间。就像在照片上一样。感谢 [![在此处输入图像描述][1][1][1]:https://i.stack.imgur.com/oEtuh.png

  • 在程序菜单或上下文菜单中插入新的菜单项 进程: 主进程​ 您可以在 Menu末尾查看示例. new MenuItem(options) options Object click Function (可选) - 单击菜单项被调用 click(menuItem,browserWindow) menuItem MenuItem browserWindow BrowserWindow event Even

  • 菜单项 添加菜单项到应用程序菜单和上下文菜单中 进程:主进程 有关示例, 请参见 Menu。 Class: MenuItem Add items to native application menus and context menus. Process: Main See Menu for examples. new MenuItem(可选) 参数 Object click Function (

  • 菜单项 添加菜单项到应用程序菜单和上下文菜单中 进程:主进程 有关示例, 请参见 Menu。 new MenuItem(options) 选项 对象 click 函数(可选) - 单击菜单项时,将用 click(menuItem, browserWindow, event) 调用。 menuItem MenuItem browserWindow BrowserWindow |未定义 - 如果没有打

  • 本文向大家介绍Android开发实现SubMenu选项菜单和子菜单示例,包括了Android开发实现SubMenu选项菜单和子菜单示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android开发实现SubMenu选项菜单和子菜单。分享给大家供大家参考,具体如下: 简介: SubMenu:代表一个子菜单,包含1~N个MenuItem 实现效果: 具体实现方法: 主活动 MainActi

  • 7.2.选项菜单 选项菜单是Android程序中标准的菜单组件。只要用户按下设备的菜单按钮,它就可以从屏幕下方显示出来。 为程序添加选项菜单,我们需要: 新建一个menu.xml表示菜单的内容。 在菜单所在的Activity中添加一个方法onCreateOptionsMenu(),在里面装载menu.xml中的内容。 在onOptionsItemSelected()中响应菜单的事件。