I found this plugin called 'WooCommerce Category Images Modification' by a guy called ashfame but can't get it to work.
This would be very handy for me as I currently have 600 categories and about to add several hundred more.
It's supposed to "Use WooCommerce product image as its category image" so if you don't have a category image set, it borrows a random image from a product in that category and uses that as the category thumbnail. His download link was some crazy tar.gz file so I just zipped the raw php file and installed it that way.
Here is the php file. It would be awesome if somebody could make sense of it and help me out! I am running Kadence Virtue theme if that helps. Thanks in advance.
<?php
/**
* Plugin Name: WooCommerce Category Images Modification
* Plugin URI: http://blog.ashfame.com/?p=1117
* Description: Use product image as its category image on category archive pages (To override image for product category, upload one for that category and it will override)
* Author: Ashfame
* Version: 0.1.1
* Author URI: http://ashfame.com/
*/
class WooCommerce_Category_Images_From_Product {
private $let_category_image_override = true;
private $randomize_category_image_from_products = true;
public function __construct() {
// Unhooking core's and hooking our custom thumbnail
add_action( 'plugins_loaded', array( $this, 'overrides' ) );
add_action( 'woocommerce_before_subcategory_title', array( $this, 'add_product_image_as_woocommerce_subcategory_thumbnail' ) );
// Support link in plugins listing
add_filter( 'plugin_action_links', array( $this, 'support_plugin_action_link' ), 10, 2 );
}
public function overrides() {
remove_action( 'woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail', 10 );
}
public function add_product_image_as_woocommerce_subcategory_thumbnail( $category ) {
if ( $this->let_category_image_override ) {
if ( get_woocommerce_term_meta( $category->term_id, 'thumbnail_id', true ) ) {
woocommerce_subcategory_thumbnail( $category );
return;
}
}
$query_args = array(
'posts_per_page' => $this->randomize_category_image_from_products ? 10 : 1,
'post_status' => 'publish',
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $category->term_id
)
)
);
$products = get_posts( $query_args );
if ( $products ) {
echo get_the_post_thumbnail( $products[ array_rand( $products ) ]->ID, 'shop_thumbnail' );
}
}
public function support_plugin_action_link( $links, $file ) {
if ( $file == plugin_basename( __FILE__ ) ) {
$support_link = '<a href="mailto:mail@ashfame.com?subject=' . rawurlencode('Premium Support') . '">Premium Support</a>';
array_unshift( $links, $support_link );
}
return $links;
}
}
new WooCommerce_Category_Images_From_Product();