Я пытался сделать тему WordPress, используя MaterializeCSS. У меня почти все работает, кроме моего мобильного бокового меню. В моем меню 4 основных пункта с подстраницами под ними. Я хочу показать это таким же образом в боковом меню, используя класс «складной». В тестовой среде, где я не создаю пункты меню динамически, я могу заставить его работать, но всякий раз, когда я хочу разрешить меню, созданное WordPress, я не могу сделать это.
Я знаю, что должен использовать navwalker, и я уже несколько часов возлюсь с ним, но не могу заставить его работать.
Скрипка от того, что я хочу: https://jsfiddle.net/bdf7yvbc
<ul class="collapsible collapsible-accordion">
<li>
<a class="collapsible-header">MSG</a>
<div class="collapsible-body">
<ul>
<li><a href="bestuur.php">Bestuur</a></li>
<li><a>Commissies</a></li>
<li><a>Agenda</a></li>
</ul>
</div>
</li>
</ul>
Мне наконец удается это сделать, не используя wp_nav_menu и walker, а используя wp_get_nav_menu_items.
Мой код, если кому-то интересно:
<?php
$menu_name = 'Side-Nav'; //Name as shown in Appearance -> Menus
if ( ($menu = wp_get_nav_menu_object( $menu_name ) ) && ( isset($menu) ) ) {
$menuitems = wp_get_nav_menu_items($menu->term_id);
?>
<ul class="collapsible collapsible-accordion">
<?php
$count = 0;
$submenu = false;
foreach( $menuitems as $item ):
$link = $item->url;
$title = $item->title;
// item does not have a parent so menu_item_parent equals 0 (false)
if ( !$item->menu_item_parent ):
// save this id for later comparison with sub-menu items
$parent_id = $item->ID;
?>
<li>
<a class="collapsible-header"><?php echo $title; ?></a>
<div class="collapsible-body">
<ul>
<li><a href="<?php echo $link; ?>">
<?php echo $title; ?>
</a></li>
<?php endif; ?>
<?php if ( $parent_id == $item->menu_item_parent ): ?>
<li>
<a href="<?php echo $link; ?>"><?php echo $title; ?></a>
</li>
<?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id && $submenu ): ?>
</ul>
<?php $submenu = false; endif; ?>
<?php endif; ?>
<?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id ): ?>
</li>
<?php $submenu = false; endif; ?>
<?php $count++; endforeach; }?>
Других решений пока нет …