Uno de las cosas que no me gustan de WordPress es la costumbre de añadir las clases a los elementos basados en el ID del mismo y no en su slug. Esto ocurre en todo, pero en este caso es con la lista de categorías generadas por wp_list_categories, devolviendo un HTML parecido a este:
<li class="cat-item cat-item-11"><a href="...">Mi categor&iactute;a</a></li>
Si queremos indicar estilos específicos para estas categorías, por ejemplo para añadir un icono a cada categoría, no nos sirve el class basado en ID, porque nos encontramos con que dependiendo de cuando se genere esta categoría, habrá que cambiar el css, siendo más lógico obtener un código como este:
<li class="cat-item cat-item-11 cat-item-mi-categoria"><a href="...">Mi categor&iactute;a</a></li>
Para poder conseguir esto, deberíamos añadir en nuestro functions.php lo siguiente.
add_filter('wp_list_categories', 'mete_slug_en_class', 10, 2);
function mete_slug_en_class($output, $args) {
return preg_replace_callback('#<li([^>]+)class="([^"]+)"([^>]*)><a([^>]+)>([^<]+)<\/a>#', function($m) {
return '<li'.$m[1].'class="'.$m[2].' cat-item-'.sanitize_title($m[5]).'"'.$m[3].'><a'.$m[4].'>'.$m[5].'</a>';
}, $output);
}