WordPress:如果存在子链接,则创建自定义菜单并生成标记

问题描述

我目前正在编写一个 extends WordPress' Walker_Nav_Menu 函数。

创建此 walker 是因为我正在尝试创建多级汉堡菜单。

这是我开始制作汉堡的方式:

<div class="hamburgerMenu__menu">
  <?php
  wp_nav_menu([
   'menu'            => 'hamburger','theme_location'  => 'hamburger','container'       => '','depth'           => 4,'fallback_cb'     => false,"walker"          => new hamburger_walker(),]);
?>
</div>

这是我目前在 WordPress 中配置菜单的方式:

enter image description here

考虑到上面的菜单,我试图生成的标记是这样的:

<!-- for links with no children -->
<li class="parent_link"><label><a href="#">Link 1</a></label></li>

<!-- for links with children -->
<li>
  <label class="chevron" for="item-2">Link 2</label>
  <input type="checkbox" id="item-2" name="item-2" class="checkbox">
  <div class="m-menu">
    <div class="m-menu__header">
      <label class="m-menu__toggle" for="item-2">back</label>
      <span>Link 2</span>
    </div>
    <ul>
      <li><label>Link 2.1</label></li>
      <li><label>Link 2.2</label></li>
    </ul>
  </div>
</li>

为了实现上述目标,我在 functions.php 中设置了以下内容:

class hamburger_walker extends Walker_Nav_Menu {
  function start_el(&$output,$item,$depth=0,$args=array(),$id = 0) {
    $object = $item->object;
    $type = $item->type;
    $title = $item->title;
    $permalink = $item->url;

    $output .= "<li class='parent_link " .  implode(" ",$item->classes) . "'>";

    //Add span if no permalink
    if( $permalink && $permalink != '#' ) {
      $output .= '<a href="' . $permalink . '">';
    } else {
      $output .= '<span>';
    }

    $output .= $title;

    if( $permalink && $permalink != '#' ) {
        $output .= '</a>';
    } else {
        $output .= '</span>';
    }

  }
}

但是,不确定如何以及什么可以在此函数中解析为检查以显示与子项的链接的不同标记?

我怎样才能用这个汉堡包实现我想要的标记,或者还有其他更简单的方法来实现这个目标?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...