Woocommerce - ¿eliminar la imagen placeholder por defecto?

5 ago 2013, 10:42:41
Vistas: 23.4K
Votos: 2

¿Cómo puedo mostrar imágenes solo para algunos productos pero no para otros?

Estoy trabajando en un menú de restaurante con pedidos en línea, mostrando el menú de comida (productos de WooCommerce) con shortcodes - por ejemplo [product_category category="starters" orderby="date" order="asc"] etc.

Muchos de los productos no requieren una imagen, pero he descubierto que si un producto no tiene una imagen asociada, WooCommerce automáticamente agrega un placeholder poco atractivo en los listados.

Puedo desactivar todas las miniaturas, pero aún necesito soporte de miniaturas para cualquier producto que requiera una imagen.

¡Si elimino la imagen placeholder por defecto, se reemplaza con el texto "placeholder"!

Si reemplazo su placeholder con un pequeño .png transparente, este se escala al tamaño que tengan las miniaturas, creando un espacio indeseado de "imagen faltante".

¿No sé qué más intentar? Gracias

0
Todas las respuestas a la pregunta 3
1

woocommerce_template_loop_product_thumbnail es una función "pluggable", lo que significa que puedes sobrescribirla con tu propio código. Cada vez que veas una función en WordPress que tenga esta estructura:

if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {

/**
 * Obtiene la miniatura del producto para el loop.
 *
 * @access public
 * @subpackage  Loop
 * @return void
 */
function woocommerce_template_loop_product_thumbnail() {
    echo woocommerce_get_product_thumbnail();
}
}

el chequeo if ( ! function_exists('algo' ) ) indica que es una función pluggable que puedes sobrescribir creando una función con el mismo nombre en tu tema o tema hijo.

La función de WooCommerce básicamente muestra la miniatura si existe o un placeholder si no existe, por lo que en tu propia versión solo necesitarías eliminar esa parte, así:

function woocommerce_template_loop_product_thumbnail() {
    global $post;
    if ( has_post_thumbnail() )
          echo get_the_post_thumbnail( $post->ID, 'shop_catalog' );
}
5 ago 2013 17:20:23
Comentarios

Gracias por eso Helga (la vikinga) :) Y gracias por tomarte el tiempo de explicar cómo y por qué funciona - muy útil

speedypancake speedypancake
5 ago 2013 19:02:32
1

Encontré una respuesta en otro lugar http://www.peterrknight.com/woocommerce-tutorial-better-product-listings-for-imageless-products-part-1/ que incluyo. Probablemente podría limpiarse o simplificarse, pero parece funcionar perfectamente al eliminar el marcador de posición de imagen predeterminado para cualquier producto que no tenga imagen:

function before_imageless_product() {
if( !has_post_thumbnail( get_the_id() ) ){
    remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
    echo '<div class="no-image">';
}
}
add_action( 'woocommerce_before_shop_loop_item', 'before_imageless_product', 9 );

function after_imageless_product() {
if( !has_post_thumbnail( get_the_id() ) ){
    add_action( 'woocommerce_before_shop_loop_item_title',      'woocommerce_template_loop_product_thumbnail', 10 );
    echo '</div>';
}
}
add_action( 'woocommerce_after_shop_loop_item', 'after_imageless_product', 9 );
5 ago 2013 14:28:56
Comentarios

Gracias por el código, funciona genial para productos. ¿Hay alguna forma de modificarlo para categorías de productos en su lugar?

Richard Mišenčík Richard Mišenčík
13 dic 2018 13:33:19
1
-2

Esta es una forma sencilla de eliminar la imagen predeterminada de marcador de posición. Solo sigue estos pasos:

1: Ve al plugin de WooCommerce
2: Accede a la carpeta templates
3: Luego ingresa a la carpeta single product

Allí encontrarás el archivo product-image.php. Ábrelo y simplemente elimina el siguiente código mencionado:

 else {
   echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<img src="%s" alt="Marcador de posición" />', woocommerce_placeholder_img_src() ), $post->ID );
 }

Tu problema quedará resuelto :)

Gracias

19 dic 2013 14:23:52
Comentarios

Nunca deberías modificar los archivos del núcleo de WP, temas o plugins (al menos no si hay otras formas). En cuanto actualices el plugin, etc., tus cambios desaparecerán.

tfrommen tfrommen
19 dic 2013 14:39:07