WordPress Walkers are very useful solution for custom tree-like data structures. Today i will share simple code for Walker_Category class, which allows you to build custom structure when you call wp_list_categories() function. We know that generally when you call this function it gives you standard ul-li structure which is only customizable its arguments. But if we want to change its tree-like structure, then Walker_Category will help us. So lets say that we want to add some icons before category names. Let’s get started.
1. Let’s add our Walker_Category class to theme’s functions.php
class Walker_Category_Custom extends Walker_Category {
function start_lvl(&$output, $depth=0, $args=array()) {
$output .= "\n<ul>\n";
}
function end_lvl(&$output, $depth=0, $args=array()) {
$output .= "</ul>\n";
}
function start_el(&$output, $item, $depth=0, $args=array(),$current_object_id = 0) {
$output.= '<li><a href="'.home_url('category/'.$item->slug).'">
<img src="http://some_path_here/images/'.($item->slug).'.jpg">
'.esc_attr($item->name);
//in this case you should create images with names of category slugs
}
function end_el(&$output, $item, $depth=0, $args=array()) {
$output .= "</a></li>\n";
}
}
So, our class is ready. Let’s implement it to our categories menu:
$our_walker= new Walker_Category_Custom();
wp_list_categories(array('walker'=>$our_walker,'orderby'=>'name','hide_empty'=>0));
That’s all. We will get ul-li menu with small icons images before each category name. Something like this:
Also with using functions of our class we can build any kind of data-structure for categories menu.




2 comments on “How to create simple Walker_Category for WordPress website”
Thank you very much for this. Helped me alot to create a modal form to post from front end. Now i’m trying to use the same modal to edit posts. The only thing i couldn’t acomplish is how to load the categorie list with some categories checked. There’s a way ?