Вывожу в сайдбаре меню категорий:
<ul id="menu">
<?php foreach ( (get_categories('show_last_updated=0&orderby=count&hide_empty=0') ) as $category ) { if ( $category->category_parent == '0' ) { ?>
<li><a href="<?php echo get_category_link($category->cat_ID); ?>"><?php echo $category->cat_name; ?></a>
<?php if (get_category_children($category->cat_ID) ) { ?>
<ul>
<?php wp_list_categories('orderby=count&hide_empty=0&title_li&child_of=' . $category->cat_ID); ?>
</ul>
<?php } ?>
</li>
<?php } } ?>
</ul>
Подскажите, пожалуйста, как вставить class="current_cat" в пункт меню, чтобы можно было выделить ссылку на активную в данный момент категорию.
По видимому нужно выполнить проверку на предмет того, на странице какой категории находится пользователь.
Пыталась сделать проверку по аналогии с проверкой –
<li <?php if(is_home()) { ?> class="current_cat" <?php } ?>><a href="<?php echo get_option(‘home’); ?>/">Главная</a></li>
Не работает.
Помогите, плиз…
Не понятен вопрос. Класс current-cat и так возвращается ф-цией wp_list_categories.
Попробуйте погуглить по запросу «wordpress подсветка активной категории» и т.п. См., например, «на странице одной записи подсвечивается категория».
Help Desk, при выводе списка категорий кодом, который я выложила выше, class="current_cat" не добавляется в html код.
Вот пример:
<ul id="menu">
<li><a href="">Film</a></li>
<li><a href="">Entertainment</a></li>
<li><a href="">Sports</a></li>
<li><a href="">Comedy</a></li>
</ul>
Если список категорий выводить стандартной функцией:
<?php wp_list_categories(‘depth=5&title_li=’); ?>
тогда class="current_cat" действительно возвращается ф-цией wp_list_categories.
Но, к сожалению, эта функция добавляет также class="children" к списку подкатегорий, а мне это не нужно.
Вопрос, по-прежнему, актуален – как выполнить проверку того, какая категория в данный момент активна?
Или, как избавиться от добавления движком class="children" к списку подкатегорий?
[quote]<?php
$CategoriesNoChildren = wp_list_categories("echo=0");
$CategoriesNoChildren = preg_replace( ‘children’ , ‘ ‘ , $CategoriesNoChildren );
echo $CategoriesNoChildren;
?>[/quote]
Не проверял, но, надеюсь, идею уловили.
Или тоже самое без правки темы (добавить в functions.php):
[quote]add_filter(‘wp_list_categories’, ‘CategoriesNoChildren’, 15);
function CategoriesNoChildren($output){
$output=preg_replace(‘children’,”,$output);
return $output;
}[/quote]
UPD: исправил опечатку в имени
Увы…
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, ‘CategoriesNoChildren’ was given in Z:\home\localhost\www\wordpress.ru\wp-includes\plugin.php on line 166
Вы идею-то поняли?
Да, идею поняла – избавляемся от сласса children, а как ее реализовать не знаю.
замените preg_replace на str_replace
Спасибо, работает.