Добавить класс & quot; активный & quot; на навигацию с переполнением стека

Я создаю свою собственную тему на WordPress, теперь я хочу, чтобы мой пункт меню добавил класс «активный», когда он активен.

<div class="top-nav">
<ul class="memenu skyblue">
<li class="active"><a href="index.php">Home</a></li>
<?php wp_list_pages( '&title_li=' ); ?>

В мои functions.php я добавил этот код.

add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item){
if( in_array('current_page_parent', $classes) ){
$classes[] = 'active ';
}
return $classes;
}

Теперь этот код не будет добавлять активный класс в li. Кто-нибудь знает, что не так с кодом? Или есть что-то, что мне нужно добавить в код?

если я попробую это, я получу этот вывод

 <ul class="memenu skyblue">
<li class="active"><a href="index.php">Home</a></li>
<li class="page_item page-item-2 current_page_item"><a href="#">About</a></li>
<li class="page_item page-item-13"><a href="#">Contact</a></li>

0

Решение

Вы используете wp_list_pages() функция в то время как вы фильтруете nav_menu_css_class крюк, который в настоящее время звонил только от Walker_Nav_Menu а не той функцией, которую вы используете (wp_list_pages).

Вы можете использовать функцию с echo параметр, чтобы вернуть вывод HTML вместо его печати. Затем найдите этот класс CSS и действуйте соответственно.

$list = wp_list_pages( 'echo=0' );
$list = str_replace('current_page_parent', 'current_page_parent active', $list);
echo $list;

нота: лучше использовать preg_replace и регулярные выражения.

Обновить:

active класс не будет добавлен, так как ни одна из страниц не является текущей страницей. Согласно инструкции:

Следующие классы применяются к элементам меню, то есть к HTML <li>
теги, сгенерированные wp_list_pages (). Примечание: wp_list_pages () и
Функции wp_page_menu () выводят те же классы CSS.

.current_page_item Этот класс добавляется в пункты меню, которые соответствуют
на текущую визуализированную статическую страницу.

.current_page_parent Этот класс добавляется в пункты меню, которые соответствуют
к иерархическому родителю текущей визуализированной статической страницы.

.current_page_ancestor Этот класс добавляется в пункты меню, которые
соответствуют иерархическому предку текущей визуализированной статики
стр.

Ни одна из них не появляется в выходных данных, поэтому ни одна из этих страниц не является текущей, и поэтому «активный» класс не будет добавлен ни к одной из них.

https://developer.wordpress.org/reference/functions/wp_list_pages/

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector