Intereting Posts
Крюк, когда категория добавляется в сообщение Как добавить раздел в конфигурацию меню, предлагая жестко закодированные элементы? Есть ли условный тег для последнего сообщения или мне нужен запрос? Как сохранить значения из списков категорий выпадающих списков после подачи неправильной формы? Переписать URL-адрес в файл плагина Как добавить код для вызова функции полный блог работает отлично, но post-new.php бросает 404 Официальная документация для полей формы вложения ни один из моих css не работает в моей дочерней теме Размытые изображения при первой загрузке страницы Как поместить метафайл в поле после редактирования после заголовка? Как сделать событие, когда любой пользователь обновляет свой профиль? Как я могу добавить «режим просмотра» для отображения параметров страниц и cpts? Как заставить «пользователей регистрироваться и регистрироваться» на дочерних сайтах? Эпоха таксономического термина meta on author.php

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

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

<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; 

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