Intereting Posts
WordPress перенаправляет меня на домашнюю страницу после обновления страницы в разделе admin Как создать таблицу базы данных, добавить данные, обновить и удалить с помощью wpdb через плагины? Совет. Структура шаблона – блоки php на боковой панели или другое? Вход в Facebook для частных членов группы WPAlchemy Metabox переписывает пулю Перетаскивание носителей не работает в Windows 10 Edge Browser Ошибка безопасности WP 4.0 + WP phpBB Bridge wp_mkdir_p проблема с арабским? Как переместить существующую папку wp-содержимого WordPress вместе с базой данных на новый сервер и новое доменное имя? Как получить значения параметров, установленные со всех сайтов в многоуровневой настройке? Измените цикл WordPress после его запуска JQuery нужно определить в <head>, но Gravity Forms определяет его в <footer> изображения, невидимые в wordpress после миграции Default post category overruling% category% для URL-адресов сообщений WordPress Admin – Добавить ссылку на страницу в разделе «Страницы»

Использование wp_get_nav_menu_items () для отображения списка дочерних страниц детей

Я работаю с основанной на Genesis темой, и мне хотелось бы создать структуру меню Страница / Child Page. Эта часть, которую я могу сделать с помощью некоторого кода, созданного Биллом Эриксоном.

По сути, я пытаюсь создать меню над содержимым на страницах с дочерними страницами. Затем на левой боковой панели есть навигационная панель для детских страниц с детьми. У меня есть что-то настроенное здесь: sandbox.digisavvy.com

Вот код, над которым я работаю.

<?php /** * Section Menu * Displays the subpages of the current section * * @author Bill Erickson * @link http://www.billerickson.net/custom-secondary-menu */ function be_section_menu() { // Only run on pages if( !is_page() ) return; // If top level page, use current ID; else use highest ancestor global $post; $section_id = empty( $post->ancestors ) ? $post->ID : end( $post->ancestors ); // Get all the menu locations $locations = get_nav_menu_locations(); // Find out which menu is in the 'primary' location $menu = wp_get_nav_menu_object( $locations[ 'primary' ] ); // Grab all menu items in this menu that have a parent of the current section. // This grabs the subpages, assuming the current section is a top level page $menu_items = wp_get_nav_menu_items( $menu->term_id, array( 'post_parent' => $section_id ) ); // If there are menu items, build the menu if( !empty( $menu_items ) ) { echo '<ul class="section-submenu">'; $first = true; foreach( $menu_items as $menu_item ) { $classes = 'page-item'; // This adds a class to the first item so I can style it differently if( $first ) $classes .= ' first-menu-item'; $first = false; // This marks the current menu item if( get_the_ID() == $menu_item->object_id ) $classes .= ' current_page_item'; echo '<li class="' . $classes . '"><a href="' . $menu_item->url . '">' . $menu_item->title . '</a></li>'; } echo '</ul>'; } } add_action( 'genesis_before_loop', 'be_section_menu' ); 

Следующая часть, которую я хотел бы выполнить, – создать систему меню с страницей Child Page / Child of Child Page. Это та часть, где я застрял. Этот код ниже предлагается как изменение, но не совсем трюк. Это просто добавляет детей детей к навигации.

 global $post; $level = count( $post->ancestors ); // Only build tertiary menu if current page is at least third level if( 1 > $level ) return; $section_id = $post->ancestors[$level - 2]; 

Solutions Collecting From Web of "Использование wp_get_nav_menu_items () для отображения списка дочерних страниц детей"

Ну, боюсь, я никогда не разбирался в этом коде. Я нашел пару плагинов, которые выполняют то, что я ищу. Перечислите подстраницы того же уровня, что и текущая страница субстраницы / дочернего / внука, а затем сможете исключить отображение определенных страниц.

Можете изучить их.

Я просто написал это: https://gist.github.com/vwasteels/874f7d08726076bdc580

Он будет извлекать рекурсивно и генерировать массив с дочерними элементами, встроенными в каждый элемент. Это будет работать с меню любой глубины.