Woocommerce - cum eliminăm imaginea placeholder implicită?
Cum pot afișa imagini doar pentru unele produse dar nu și pentru altele?
Lucrez la un meniu de restaurant cu comandă online, afișând meniul (produse WooCommerce) cu shortcode-uri - de exemplu [product_category category="starters" orderby="date" order="asc"] etc.
Multe dintre produse nu necesită o imagine, dar am descoperit că dacă un produs nu are o imagine asociată, WooCommerce adaugă automat un placeholder urât în listări.
Pot dezactiva toate miniaturile, dar am în continuare nevoie de suport pentru miniaturi pentru produsele care necesită o imagine.
Dacă șterg imaginea placeholder implicită, aceasta este înlocuită cu textul "placeholder"!
Dacă înlocuiesc placeholder-ul lor cu un .png transparent mic, acesta este mărit la dimensiunea miniaturilor, creând un spațiu gol nedorit de tip "imagine lipsă".
Nu știu ce altceva să mai încerc? Mulțumesc

woocommerce_template_loop_product_thumbnail
este o funcție pluggable, ceea ce înseamnă că o poți suprascrie cu propriul tău cod. Ori de câte ori vezi o funcție în WordPress care arată astfel:
if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {
/**
* Obține imaginea miniatură a produsului pentru buclă.
*
* @access public
* @subpackage Loop
* @return void
*/
function woocommerce_template_loop_product_thumbnail() {
echo woocommerce_get_product_thumbnail();
}
}
verificarea if ( ! function_exists('something' ) )
indică o funcție pluggable pe care o poți suprascrie prin crearea unei funcții cu același nume în tema ta sau în tema copil.
Funcția WooCommerce afișează implicit miniatură dacă aceasta există și un placeholder dacă nu există. Pentru a elimina această comportare în versiunea ta, poți face astfel:
function woocommerce_template_loop_product_thumbnail() {
global $post;
if ( has_post_thumbnail() )
echo get_the_post_thumbnail( $post->ID, 'shop_catalog' );
}

Am găsit un răspuns în altă parte http://www.peterrknight.com/woocommerce-tutorial-better-product-listings-for-imageless-products-part-1/ pe care îl includ. Probabil că ar putea fi îmbunătățit sau simplificat, dar pare să funcționeze perfect prin eliminarea imaginii implicite pentru produsele care nu au o imagine:
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 );

acesta este un mod simplu de a elimina imaginea implicită placeholder. doar urmați pașii:
1: accesați plugin-ul woocommerce
2: accesați folderul templates
3: apoi accesați folderul single product
acolo veți găsi fișierul product-image.php
.
deschideți-l și eliminați doar codul menționat mai jos
else {
echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<img src="%s" alt="Placeholder" />', woocommerce_placeholder_img_src() ), $post->ID );
}
problema dumneavoastră va fi rezolvată.:)
mulțumesc
