微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。