Intereting Posts
Загрузка результатов поиска в div Как получить все должности в категории, которые были опубликованы между двумя датами? Как добавить пользовательские классы в более чем одно отдельное меню – ссылку в wordpress? Наличие форума в подпапке Как добавить ссылки на названия виджетов? Каковы наилучшие методы использования кэширующего плагина на общем хосте? Почему канонический элемент ссылки не используется для всех страниц? Список последних заголовков сообщений из пользовательских таксономий? Путь к массовому удалению пунктов меню в новом представлении 3.x> Система меню? Создайте цикл контуров содержимого и выдержки с пейджингом и параметры для # сообщений JQuery добавляет функцию Каталог продуктов в WordPress Как я могу протестировать логин для истекшего сеанса? Как перенаправить пользователей в свой профиль после успешного редактирования своего профиля Пользовательские поля на виртуальной странице

Оберните каждого ребенка и его внуков отдельно

Мне нужна помощь, разделяющая дочерние страницы, вот что я имею прямо сейчас:

<ul class="children"> <li class="page_item page-item-54 page_item_has_children"><span>Title of Child1</span> <ul class="children"> <li class="page_item page-item-60"><a>Grandchild1</a></li> <li class="page_item page-item-62"><a>Grandchild2</a></li> </ul> </li> <li class="page_item page-item-58 page_item_has_children"><span>Title of Child2</span> <ul class="children"> <li class="page_item page-item-64"><a>Grandchild1</a></li> <li class="page_item page-item-66"><a>Grandchild2</a></li> </ul> </li> </ul> 

и этого я хочу достичь:

 <div class="children-list"> <ul class="children"> <span>Title of Child1</span> <li class="page_item page-item-60"><a>Grandchild1</a></li> <li class="page_item page-item-62"><a>Grandchild2</a></li> </ul> <ul class="children"> <span>Title of Child2</span> <li class="page_item page-item-64"><a>Grandchild1</a></li> <li class="page_item page-item-66"><a>Grandchild2</a></li> </ul> </div> 

Это ходок, который я использую для wp_list_pages

 class series_walker extends Walker_Page { public function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) { if ( isset( $args['item_spacing'] ) && 'preserve' === $args['item_spacing'] ) { $t = "\t"; $n = "\n"; } else { $t = ''; $n = ''; } if ( $depth ) { $indent = str_repeat( $t, $depth ); } else { $indent = ''; } $css_class = array( 'page_item', 'page-item-' . $page->ID ); if ( isset( $args['pages_with_children'][ $page->ID ] ) ) { $css_class[] = 'page_item_has_children'; } if ( ! empty( $current_page ) ) { $_current_page = get_post( $current_page ); if ( $_current_page && in_array( $page->ID, $_current_page->ancestors ) ) { $css_class[] = 'current_page_ancestor'; } if ( $page->ID == $current_page ) { $css_class[] = 'current_page_item'; } elseif ( $_current_page && $page->ID == $_current_page->post_parent ) { $css_class[] = 'current_page_parent'; } } elseif ( $page->ID == get_option('page_for_posts') ) { $css_class[] = 'current_page_parent'; } $css_classes = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) ); if ( '' === $page->post_title ) { /* translators: %d: ID of a post */ $page->post_title = sprintf( __( '#%d (no title)' ), $page->ID ); } $args['link_before'] = empty( $args['link_before'] ) ? '' : $args['link_before']; $args['link_after'] = empty( $args['link_after'] ) ? '' : $args['link_after']; $atts = array(); $atts['href'] = get_permalink( $page->ID ); $output .= $indent . sprintf( '<li class="%s">'.(($depth == 1) ? '<span%s>%s%s%s</span>' : '<a%s>%s%s%s</a>'), $css_classes, $attributes, $args['link_before'], /** This filter is documented in wp-includes/post-template.php */ apply_filters( 'the_title', $page->post_title, $page->ID ), $args['link_after'] ); } } 

Любая помощь очень ценится, я пытался сделать это уже 2 дня. Спасибо.

Я не уверен, что этого класса достаточно, чтобы изменить желаемый результат. Возможно, вам придется распространять другие части вместе с start_el. (Я не проверял это.)

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

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

Скажем, значение wp_list_pages сохраняется в переменной $ mylist, а затем попробуйте это после.

 $mylist = preg_replace('/^\s*\<ul[^>]*\>/is', '<div class="children-list">', $mylist); $mylist = preg_replace('/\<\/ul\>\s*$/is', '</div>', $mylist); $mylist = preg_replace('/\<\/ul\>\s*\<\/li>/is', '</ul>', $mylist); $mylist = preg_replace('/<li\b[^>]*has\_children[^>]*\>(.*?)(<ul\b[^>]*\>)/is', '$2$1', $mylist); echo $mylist; 

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