Intereting Posts
получение пользовательского почтового изображения через виджет Как создать категорию и подкатегорию отсортированного блогера со всеми сообщениями? Как разместить изображения в моем блоге с заранее определенной границей Укажите пользовательский php.ini для использования с WP-CLI Получить изображение с URL-адреса в форме отправки в конец Наличие второй страницы администратора для настраиваемого типа сообщения Перечислите все пользовательские сообщения типа сообщений из данной категории? Файл доступен, но дает 404 в wordpress Как включить PHP-код в свой пост? сильный тег не работает в WordPress 4.0.1 Если тип Post использует боковую панель («дерево») Как я могу «удалить» персонализированный пост, когда вы вошли в систему как Admin Как получить данные формы? разделить значения настраиваемого поля в div каждые два значения Невозможно добавить темы редактирования и добавить плагины после многосайтового обновления

Как я могу сделать вывод wp_list_categories li с классом-slug как класс для своих детей?

Проще говоря, я хотел бы изменить вывод wp_list_categories из этого:

  <li class="cat-item cat-item-1"><a href="http://mysite.com/category/articles">Articles</a></li> <li class="cat-item cat-item-7"><a href="http://mysite.com/category/design">Design</a></li> 

вместо этого:

  <li class="cat-item category-articles"><a href="http://mysite.com/category/articles">Articles</a></li> <li class="cat-item category-design"><a href="http://mysite.com/category/design">Design</a></li> 

Поэтому я попробовал Google и нашел решение, упомянутое в этом вопросе, добавить фильтр в wp_list_categories и запрос, если он используется для перечисления налоговых терминов? ,

Мне нужно поставить это на мои functions.php :

  add_filter('wp_list_categories', 'add_slug_css_list_categories'); function add_slug_css_list_categories($list) { $cats = get_categories(); foreach($cats as $cat) { $find = 'cat-item-' . $cat->term_id . '"'; $replace = 'category-' . $cat->slug . '"'; $list = str_replace( $find, $replace, $list ); $find = 'cat-item-' . $cat->term_id . ' '; $replace = 'category-' . $cat->slug . ' '; $list = str_replace( $find, $replace, $list );*/ } return $list; } 

EDIT: Теперь я понимаю проблему!

Фильтр выше работает для родительских категорий. Однако это не работает для детей!

Таким образом, используя этот код, если я использую wp_list_categories , он будет выводиться следующим образом:

  <li class="cat-item category-articles"><a href="http://mysite.com/category/articles">Articles</a> <ul class="children> <li class="cat-item cat-item-10"><a href="http://mysite.com/category/articles/tips/">Tips</a></li> <li class="cat-item cat-item-11"><a href="http://mysite.com/category/articles/tutorials/">Tutorials</a></li> </ul> </li> <li class="cat-item category-design"><a href="http://mysite.com/category/design">Design</a></li> 

Обратите внимание, что даже если класс родителей относится к category-articles , класс детей остается как cat-item-10 .

Есть ли какое-либо исправление?

Я не уверен, что повторение запросов по категориям – хорошая идея. Следующий код расширяет Walker_Category и использует его для замены. Поместите в свои функции functions.php:

 class WPSE67791_Walker_Category extends Walker_Category { public function start_el(&$output, $category, $depth, $args) { parent::start_el( $output, $category, $depth, $args ); $find = 'cat-item-' . $category->term_id . '"'; $replace = 'category-' . $category->slug . '"'; $output = str_replace( $find, $replace, $output ); } } 

Затем вызовите wp_list_categories следующим образом:

 wp_list_categories( array( 'child_of' => 4, 'walker' => new WPSE67791_Walker_Category ) );