I currently have a code where, in my category.php, it checks if the specific category has subcategories, and if it does, show them using wp_list_categories.
I’d love to have these wp_list_categories to show thumbnails, so I created a new walker, but I cannot figure out how to show thumbnails.
I’d be fine with having it show the featured image of my latest custom post type in this category, or using a plugin.
I currently have the following walker in my functions.php:
class Walker_Category_Parents extends Walker_Category {
function start_el(&$output, $category, $depth, $args) {
global $wpdb;
extract($args);
$link2 = ''.$category->slug.'';
$cat_name = esc_attr( $category->name );
$cat_name = apply_filters( 'list_cats', $cat_name, $category );
$link = '<a href="' . esc_attr( get_term_link($category) ) . '" ';
$link .= 'title="' . esc_attr( strip_tags( apply_filters( 'category_description', $category->description, $category ) ) ) . '"';
$link .= 'rel="'.$category->slug.'" ';
$link .= '>';
$link .= $cat_name . '</a>';
if ( 'list' == $args['style'] ) {
$output .= "t<li";
$children = $wpdb->get_results( "SELECT term_id FROM $wpdb->term_taxonomy WHERE parent=".$category->term_id );
$children_count = count($children);
$has_children = ($children_count != 0) ? ' parent-category' : '';
$class = 'cat-item cat-item-' . $category->term_id . $has_children;
if ( !empty($current_category) ) {
$_current_category = get_term( $current_category, $category->taxonomy );
if ( $category->term_id == $current_category )
$class .= ' current-cat';
elseif ( $category->term_id == $_current_category->parent )
$class .= ' current-cat-parent';
}
$output .= ' class="' . $class . '"';
$output .= ">$linkn";
$output .= "<img src='http://localhost/wp-content/themes/vom13/images/producten/";
$output .= "$link2.png'>n";
} else {
$output .= "t$link<br />n";
}
}
}
As you can see, it currently looks for the image in a folder, but this is absolutely not ideal, because I’m not the only one adding categories, but I don’t want to give everybody FTP access.
Any solutions?
Thanks!
There’s a great plugin called Taxonomy Images. It lets you set one image per category that you can then access in all sorts of ways.
It’s a little funky in that it uses some custom filters to return the images, but the documentation is pretty good and you should be able to figure it out.
== UPDATE ==
Here’s a quick example that gets the image based on ID (I’m assuming you’ll have the
$category
object that you already have in your snippet:Here’s a slightly expanded version of that code on the support forums.
I think the best way is to allow tha admin choose the featured image for a category from Media Library. This is what WooCommerce does for product categories. I checked how WooCommerce does this (in includes/admin/class-wc-admin-taxonomies.php) and here comes the reusable code (use it in functions.php or your custom plugin). It can be used with custom post types’ taxonomies.
The way to show the image in the templates will also make use of
get_term_meta()
: