Как добавить активный класс в пользовательское меню, используя while loop и wp_list_pages

Я запускаю wp_list_pages через цикл while для создания пользовательского меню. Запустив его через цикл, я могу настроить таргетинг на определенные элементы. Мне нужно выяснить, как либо перенаправлять классы, автоматически созданные wp_list_pages либо применять специальный активный класс страницы к списку, который генерирует мой цикл while.

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

 <?php echo '<ul>'; $args = array( 'post_type' => 'page', 'post_status' => 'publish', 'posts_per_page' => -1, 'post_parent' => $post->post_parent, ); $query = new WP_Query($args); while ($query->have_posts()) { $query->the_post(); $child = get_pages('child_of='.$post->ID); if( count( $child ) != 0 ) : ?> <li class="has-children"><span><?php the_title(); ?></span> <?php $children = wp_list_pages( 'title_li=&child_of='.$post->ID.'&echo=0' ); if ( $children) : ?> <ul class="children"> <li><a href="<?php the_permalink(); ?>">Overview</a></li> <?php echo $children; ?> </ul> <?php endif; ?> </li> <?php else : ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php endif; } echo '</ul>'; ?> 

Который производит этот вывод, если на стр. 2.2 (обратите внимание на class current_page_item ):

 <ul> <li><a href="http://website.com/page-1">Page 1</a></li> <li class="has-children"><span>Page 2</span> <ul class="children"> <li><a href="http://website.com/page-2">Overview</a></li> <li class="page_item page-item-115"><a href="http://website.com/page-2/page-2-1">Page 2.1</a></li> <li class="page_item page-item-116 current_page_item"><a href="http://website.com/page-2/page-2-2">Page 2.2</a></li> </ul> </li> <li><a href="http://website.com/page-3">Page 3</a></li> <li><a href="http://website.com/page-4">Page 4</a></li> 

Если на странице 1 выводится (не указывается класс, указывающий активную страницу):

 <ul> <li><a href="http://website.com/page-1">Page 1</a></li> <li class="has-children"><span>Page 2</span> <ul class="children"> <li><a href="http://website.com/page-2">Overview</a></li> <li class="page_item page-item-115"><a href="http://website.com/page-2/page-2-1">Page 2.1</a></li> <li class="page_item page-item-116"><a href="http://website.com/page-2/page-2-2">Page 2.2</a></li> </ul> </li> <li><a href="http://website.com/page-3">Page 3</a></li> <li><a href="http://website.com/page-4">Page 4</a></li> 

Вы заметите, что li в моей второй <ul> имеет класс current_page_item если на этой странице, потому что я wp_list_pages исключительно на wp_list_pages чтобы сгенерировать список. Я хочу найти способ добавить active класс к первому <ul> если один из его li является текущей страницей или предназначен для классов, которые динамически создает wp_list_pages .

Solutions Collecting From Web of "Как добавить активный класс в пользовательское меню, используя while loop и wp_list_pages"

Найден ответ здесь: добавьте класс в элементы в wp_list_pages

Просто добавьте <?php if(is_page($post->ID )) {?> class="current_page_item" <?php }?> . Я добавил его в <li> который содержал ссылку «Обзор» на втором уровне <ul class="children"> а также <li> на верхнем уровне <ul> если на странице нет дочерних элементов.

 <?php echo '<ul>'; $args = array( 'post_type' => 'page', 'post_status' => 'publish', 'posts_per_page' => -1, 'post_parent' => $post->post_parent, ); $query = new WP_Query($args); while ($query->have_posts()) { $query->the_post(); $child = get_pages('child_of='.$post->ID); if( count( $child ) != 0 ) : ?> <li class="has-children"><span><?php the_title(); ?></span> <?php $children = wp_list_pages( 'title_li=&child_of='.$post->ID.'&echo=0' ); if ( $children) : ?> <ul class="children"> <li <?php if(is_page($post->ID )) {?> class="current_page_item" <?php }?>><a href="<?php the_permalink(); ?>">Overview</a></li> <?php echo $children; ?> </ul> <?php endif; ?> </li> <?php else : ?> <li <?php if(is_page($post->ID )) {?> class="current_page_item" <?php }?>><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php endif; } echo '</ul>'; ?>