Tamaño de imagen personalizado para Woocommerce
Woocommerce tiene tres tamaños de imagen incorporados. Pero dado que hay más de tres tamaños diferentes de contenedor, algunas imágenes siempre se estiran o comprimen. Por lo tanto, la calidad de la imagen y la velocidad de la página se ven afectadas. Woocommerce utiliza, por ejemplo, el tamaño de catálogo para imágenes de catálogo e imágenes de productos relacionados. WordPress ofrece un método sencillo para generar tamaños de imagen personalizados. Y he intentado generar un tamaño para mis productos relacionados:
add_action( 'after_setup_theme', 'jmt_theme_setup' );
function jmt_theme_setup() {
add_image_size( 'related-thumb', 274, 274, true );
}
¿Hay alguna manera de incorporar este tamaño en las imágenes de productos relacionados de Woocommerce?
Gracias por tu interés.
Saludos theo

Puedes sobrescribir el CSS de WooCommerce con este fragmento de código, Remi Corson:
<?php
add_filter( 'wp_head' , 'related_products_style' );
function related_products_style() {
if( is_product() ) :
?>
<style>
.woocommerce .related ul.products li.product img, .woocommerce .related ul li.product img, .woocommerce .upsells.products ul.products li.product img, .woocommerce .upsells.products ul li.product img, .woocommerce-page .related ul.products li.product img, .woocommerce-page .related ul li.product img, .woocommerce-page .upsells.products ul.products li.product img, .woocommerce-page .upsells.products ul li.product img
{
width: 274px !important;
height: 274px !important;
}
</style>
<?php
endif;
}

Gracias por el código, pero sobrescribir el CSS no aplica los tamaños correctos de las imágenes. Solo establece el tamaño del contenedor.

Existen algunas opciones que puedes elegir al cambiar los tamaños de imágenes. Cambiar las imágenes predeterminadas de WooCommerce es más difícil que en una instalación normal de WordPress, ya que están integradas en el plugin.
Modificar los tamaños de imágenes de productos relacionados:
He probado esto y parece funcionar solo en productos relacionados (aunque estoy seguro de que podría expandirse a otras áreas). Es posible que aún necesites aprovechar Regenerar miniaturas para obtener los tamaños correctos.
Necesitamos poner todo en un filtro wp
:
function woo_init() {
// Las funciones siguientes van aquí...
}
add_action( 'wp', 'woo_init' );
Pude omitir la primera parte de esto, estableciendo la variable de consulta y aún así funciona, pero como usa una plantilla genérica content-product.php
no confiaría en ello, así que estableceremos una variable de consulta para asegurarnos de que solo cambiamos el tamaño de imagen para productos relacionados:
if( is_singular( 'product' ) ) {
add_filter( 'woocommerce_related_products_args', function( $query_args ) {
if( ! empty( $query_args ) ) {
set_query_var( 'related_products', true );
}
return $query_args;
} );
}
A continuación, necesitamos eliminar el loop_product_thumbnail
predeterminado y reemplazarlo con nuestro personalizado. Verificamos que la variable de consulta realted_products
esté establecida y sea TRUE
antes de servir nuestra nueva imagen; de lo contrario, servimos la imagen predeterminada.
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
add_action( 'woocommerce_before_shop_loop_item_title',
function() {
$related = get_query_var( 'related_products' );
if( TRUE == $related ) {
echo woocommerce_get_product_thumbnail( 'related-thumb', 274, 274 ); // Nuestro nuevo tamaño de imagen
} else {
echo woocommerce_get_product_thumbnail(); // Tamaño de imagen predeterminado
}
},
10
);
CSS
WooCommerce usa width: 100%; height: auto;
en todas sus imágenes. Podrías cambiar esto a max-width: 100%; width: auto; height: auto;
y jugar con los márgenes / número de columnas para obtener el aspecto deseado.
Cambiar los tamaños de imagen iniciales
Puedes cambiar los tamaños de imagen que WooCommerce usa siguiendo estos pasos:
- Inicia sesión en WordPress
- Navega a
WooCommerce -> Pestaña Productos -> Mostrar (Subpestaña)
- Hacia la parte inferior puedes establecer los tamaños de imagen para:
- Imágenes de catálogo
- Imagen de producto único
- Miniaturas de producto
- Finalmente, puedes instalar Regenerar miniaturas para obtener los tamaños cambiados.
Otro método es tener estos tamaños al instalar:
function yourtheme_woocommerce_image_dimensions() {
global $pagenow;
if ( ! isset( $_GET['activated'] ) || $pagenow != 'themes.php' ) {
return;
}
$catalog = array(
'width' => '400', // px
'height' => '400', // px
'crop' => 1 // true
);
$single = array(
'width' => '600', // px
'height' => '600', // px
'crop' => 1 // true
);
$thumbnail = array(
'width' => '120', // px
'height' => '120', // px
'crop' => 0 // false
);
// Tamaños de imagen
update_option( 'shop_catalog_image_size', $catalog ); // Miniaturas de categoría de producto
update_option( 'shop_single_image_size', $single ); // Imagen de producto único
update_option( 'shop_thumbnail_image_size', $thumbnail ); // Miniaturas de galería de imágenes
}
add_action( 'after_switch_theme', 'yourtheme_woocommerce_image_dimensions', 1 );
Enlaces de referencia de WooCommerce:

Gracias. Ya intenté todo eso. Pero al parecer la única solución es llegar a un compromiso. Eso significa un tamaño para imágenes relacionadas y del catálogo. Solo me preguntaba si había una manera fácil de agregar una cuarta dimensión de imagen. Saludos, Theo

@theo - Lamentablemente, no que yo sepa. Teóricamente, podrías sobrescribir la Plantilla de WooCommerce con tu propia plantilla, crear tu propio WP_Query y generar el mismo loop pero llamando a tu imagen personalizada de esa manera. Podría haber otra forma que nunca he probado, pero editaré mi pregunta con ella y tal vez tengas suerte.

Ok, lo intenté y fallé. Supongo que tendré que conformarme con esta limitación. Pero gracias por todas las pistas.

@timholz No tengo una instalación activa de woocommerce para experimentar con esto. Cuando tenga la oportunidad lo probaré y veré qué se me ocurre. Si descubro algo te etiquetaré y te lo haré saber o si encuentras una mejor solución ¡publícala aquí! ¡Buena suerte!

Hola Howdy Mc Gee, gracias por tu respuesta. Por ahora asigné la dimensión más grande para las imágenes relacionadas y del catálogo. Se ve bien, pero pierde un poco de velocidad, ya que las imágenes del catálogo tienen que escalarse. Pero de todos modos, gracias por tu atención. :)theo

@timholz Encontré una solución que he modificado en mi respuesta y he añadido la solución al principio. Tomé la teoría original y la probé, debería funcionar para productos relacionados y probablemente podrías hacer que funcione para otros productos también. Si te funcionó, no olvides hacer clic en la marca de verificación para mostrar a los futuros lectores que te funcionó.

– Gracias por tu esfuerzo. Ahora es demasiado tarde. Pero mañana probaré el código y reportaré.

Hola Howdy McGee – no pude esperar hasta mañana. Tu código funciona genial. Es la condición la que hace la magia. Muchas gracias por tu tiempo y esfuerzo. El sitio en el que estoy trabajando está en modo de desarrollo, pero tan pronto como esté listo te enviaré un enlace. (por si estás interesado). Muchas gracias. Saludos, Theo PD: Intenté votar positivamente tu respuesta, pero lamentablemente mi reputación es insuficiente. Así que te voto positivamente aquí. Respuesta de primer nivel.

@timholz ¡Me alegra que te haya funcionado! Por favor, asegúrate de hacer clic en la marca de verificación para que los futuros lectores sepan que esto respondió a tu pregunta (los comentarios se ocultan después de un tiempo). También te sugiero que revises cualquier otra pregunta que hayas hecho en el pasado y hagas lo mismo (incluso si ya las respondiste). ¡Es una forma genial y fácil de ganar reputación y mostrar tu agradecimiento!

este es el enlace: www.j-m-t.ch Ahora tengo los tamaños de imagen apropiados para los productos del catálogo y relacionados. gracias
