В Woocommerce размер изображения миниатюры товара в категории и размер миниатюры категории и подкатегории устанавливается совместно в Настройки → Товары → Размеры изображений товара → Изображение каталога.
Задача была установить размеры миниатюры для категорий и подкатегорий отличные от изображений каталога.
Например: размер изображений категорий/подкатегорий 300 на 300 в то время как настойки изображений каталога (изображений миниатюры товара в выдаче категорий) будут 300 на 400.
Столкнувшись с такой проблемой, готового решения я не нашел. Как временный вариант, я придумал такой хук:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | add_action( 'woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail_hook', 2 ); function woocommerce_subcategory_thumbnail_hook( $category ) { $small_thumbnail_size = apply_filters( 'woocommerce_subcategory_thumbnail', 'full' ); $dimensions = wc_get_image_size( $small_thumbnail_size ); $thumbnail_id = get_woocommerce_term_meta( $category->term_id, 'thumbnail_id', true ); if ( $thumbnail_id ) { $image = wp_get_attachment_image_src( $thumbnail_id, $small_thumbnail_size ); $image = $image[0]; $image_srcset = function_exists( 'wp_get_attachment_image_srcset' ) ? wp_get_attachment_image_srcset( $thumbnail_id, $small_thumbnail_size ) : false; $image_sizes = function_exists( 'wp_get_attachment_image_sizes' ) ? wp_get_attachment_image_sizes( $thumbnail_id, $small_thumbnail_size ) : false; } else { $image = wc_placeholder_img_src(); $image_srcset = $image_sizes = false; } if ( $image ) { // Prevent esc_url from breaking spaces in urls for image embeds. // Ref: https://core.trac.wordpress.org/ticket/23605. $image = str_replace( ' ', '%20', $image ); // Add responsive image markup if available. if ( $image_srcset && $image_sizes ) { echo '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $category->name ) . '" width="' . esc_attr( $dimensions['width'] ) . '" height="' . esc_attr( $dimensions['height'] ) . '" srcset="' . esc_attr( $image_srcset ) . '" sizes="' . esc_attr( $image_sizes ) . '" />'; } else { echo '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $category->name ) . '" width="' . esc_attr( $dimensions['width'] ) . '" height="' . esc_attr( $dimensions['height'] ) . '" />'; } } } |
Код взят из файла wc-template-functions.php
В строчке
1 | $small_thumbnail_size = apply_filters( 'woocommerce_subcategory_thumbnail', 'full' ); |
меняем размер на нужный вам.