Forums

[resolved] How can I make wp_list_categories output li with category-slug as class ? (3 posts)

  1. 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

  2. alchymyth
    The Sweeper
    Posted 1 year ago #

    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;
    }
  3. 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! ;-)

Topic Closed

This topic has been closed to new replies.

About this Topic