supergab
Member
Posted 1 year ago #
Hello,
I would like the following wp_list_categories output
<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 cat-item-8"><a href="http://mysite.com/category/photography">Photography</a></li>
<li class="cat-item cat-item-6"><a href="http://mysite.com/category/video">Video</a></li>
to be ...
<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>
<li class="cat-item category-photography"><a href="http://mysite.com/category/photography">Photography</a></li>
<li class="cat-item category-video"><a href="http://mysite.com/category/video">Video</a></li>
... instead.
How ? Thanks
these css classes .category-articles are also generated by body_class() and post_class() - so if your theme uses these functions, there could be a style confusion.
your idea is possible with hooking a new filter to 'wp_list_categories';
http://codex.wordpress.org/Plugin_API/Filter_Reference
add the code to functions.php of your theme:
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;
}
supergab
Member
Posted 1 year ago #
Thank you very much!
By reading my question again I realized that I've asked more than I needed.
Your function replaces cat-item-* but all I really needed is to add the category class. But thanks it's even better! ;-)