最初の navbar-dropdown を保持し、その後のすべてのレベルを削除するための最良の方法は何ですか? そのため、メイン メニューのホバーを維持したいのですnavbar-dropdown
が、すべてのサブメニューを一覧表示するだけにします。
またhas-dropdown is-hoverable
、メイン メニュー レベルのみをオンにして、すべてのサブメニューから削除したいと考えています。
現在の Navwalker の外観は次のとおりです。
class Navwalker extends Walker_Nav_Menu {
public function start_lvl( &$output, $depth = 0, $args = array() ) {
$output .= "<div class='navbar-dropdown'>";
}
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
// Add your custom item classes here
$custom_classes_from_menu = implode(' ', $item->classes); // turn the WP classes object array to string values
$liClasses = 'navbar-item ' . $custom_classes_from_menu; // add the values to your classes list
$hasChildren = $args->walker->has_children;
$liClasses .= $hasChildren? " has-dropdown is-hoverable": "";
if($hasChildren){
$output .= "<div class='".$liClasses."'>";
$output .= "\n<a class='navbar-link' href='".$item->url."'>".$item->title."</a>";
}
else {
$output .= "<a class='".$liClasses."' href='".$item->url."'>".$item->title;
}
// Adds has_children class to the item so end_el can determine if the current element has children
if ( $hasChildren ) {
$item->classes[] = 'has_children';
}
}
public function end_el(&$output, $item, $depth = 0, $args = array(), $id = 0 ){
if(in_array("has_children", $item->classes)) {
$output .= "</div>";
}
$output .= "</a>";
}
public function end_lvl (&$output, $depth = 0, $args = array()) {
$output .= "</div>";
}
}