Intereting Posts
Используйте PHP PHP SDK от WPBook Как я могу ограничить php mail (), чтобы отправить мне только одно сообщение после ошибки db Многоязычный сайт с двумя доменами Поделиться pdf с другом по электронной почте Есть ли крючок или функция для многопользовательского блога деактивировать или удалить? Настройка параметров по умолчанию на новых сайтах на многоузловом Почему мои «средние» изображения неправильного размера Повторяющаяся проблема с slug / permalink Регистрация в перенаправлении на правильную страницу, но показывает выведенное содержимое до принудительного обновления Как создать петлю сетки бутстрапа? Игнорирует post_type, когда нет результатов Скрыть не классифицированные, если нет набора категорий Проблема с плагином уведомления о комментариях Сессионные переменные, потерянные во время вызовов Ajax – WordPress – тема Sage Starter Многоуровневый путь, как изменить основной сайт

автоматически добавьте родительский пункт меню в качестве первого элемента в подменю с помощью nav_walker

В моей навигации элементы, у которых есть дети, должны быть доступны только для открытия или закрытия подменю. Из-за этого я ищу способ добавить этот элемент в качестве первого элемента в подменю, чтобы страница была доступна.

Вот краткий пример:

# structure in backend # needed in frontend # # -------------------- # ----------------------------------- # # item 1 # item 1 # # item 2 # item 2 (opens / closes submenu) # # - subitem 1 # - item 2 copy (normal link to page) # # - subitem 2 # - subitem 1 # # - subitem 3 # - subitem 2 # # item 3 # - subitem 3 # # # item 3 # # -------------------- # ----------------------------------- # 

Я пробовал его следующим образом: с count var, я знаю, есть ли я в подменю и когда это первый элемент. Итак, с $ item-> object_id я могу получить все значения из родительского элемента меню. Но я не знаю, как создать новый элемент меню в методе класса:

 class flexnav_walker extends Walker_Nav_Menu { static $count=0; public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; $classes = empty( $item->classes ) ? array() : (array) $item->classes; $classes[] = 'menu-item-' . $item->ID; $args = apply_filters( 'nav_menu_item_args', $args, $item, $depth ); $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) ); $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : ''; $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args, $depth ); $id = $id ? ' id="' . esc_attr( $id ) . '"' : ''; $output .= $indent . '<li' . $id . $class_names .'>'; $atts = array(); $atts['title'] = ! empty( $item->attr_title ) ? $item->attr_title : ''; $atts['target'] = ! empty( $item->target ) ? $item->target : ''; $atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : ''; $navActive = get_post_meta( $item->object_id, '_wecOverviewNavState', true ); // remove link from pages with children if (in_array('menu-item-has-children', $classes, true)) { $atts['href'] = '#'; }else{ $atts['href'] = ! empty( $item->url ) ? $item->url : ''; } $atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth ); $attributes = ''; foreach ( $atts as $attr => $value ) { if ( ! empty( $value ) ) { $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value ); $attributes .= ' ' . $attr . '="' . $value . '"'; } } if ($depth==0) self::$count=0; // reset var when we are in first level if ($depth==1 && self::$count==1) { // if we are in submenu and items count is 1... // create a link from the actual parent // $hasChildren = count(get_pages(array( 'child_of' => $item->object_id ))); } $title = apply_filters( 'the_title', $item->title, $item->ID ); $title = apply_filters( 'nav_menu_item_title', $title, $item, $args, $depth ); $item_output = $args->before; $item_output .= '<a'. $attributes .'>'; $item_output .= $args->link_before . $title . $args->link_after; $item_output .= '</a>'; $item_output .= $args->after; $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); self::$count++; } } 

Спасибо за вашу помощь!