Woocommerce - rimuovere l'immagine segnaposto predefinita?
Come posso mostrare le immagini solo per alcuni articoli ma non per altri?
Sto lavorando su un menu di ristorante con ordinazione online, visualizzando il menu del cibo (prodotti WooCommerce) con shortcode - ad esempio [product_category category="starters" orderby="date" order="asc"] ecc.
Molti degli articoli non richiedono un'immagine, ma ho scoperto che se un prodotto non ha un'immagine associata, WooCommerce aggiunge automaticamente un segnaposto poco gradevole agli elenchi.
Posso disattivare tutte le miniature, ma ho ancora bisogno del supporto per le miniature per qualsiasi prodotto che richiede un'immagine.
Se elimino l'immagine segnaposto predefinita, viene sostituita con il testo "placeholder"!
Se sostituisco il loro segnaposto con un piccolo .png trasparente, questo viene ingrandito alla dimensione delle miniature, creando un indesiderato "spazio vuoto" per l'immagine mancante.
Non so cos'altro provare? Grazie

woocommerce_template_loop_product_thumbnail
è una funzione pluggable, quindi puoi sovrascriverla con il tuo codice. Ogni volta che vedi una funzione in un ambiente WordPress che si presenta così:
if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {
/**
* Ottiene l'anteprima del prodotto per il loop.
*
* @access public
* @subpackage Loop
* @return void
*/
function woocommerce_template_loop_product_thumbnail() {
echo woocommerce_get_product_thumbnail();
}
}
il controllo if ( ! function_exists('qualcosa' ) )
indica una funzione pluggable che puoi sovrascrivere creando una funzione con lo stesso nome nel tuo tema o child theme.
La funzione di WooCommerce mostra essenzialmente l'anteprima se esiste e il placeholder se non esiste, quindi nella tua versione dovrai semplicemente eliminare quella parte, in questo modo:
function woocommerce_template_loop_product_thumbnail() {
global $post;
if ( has_post_thumbnail() )
echo get_the_post_thumbnail( $post->ID, 'shop_catalog' );
}

Trovata una risposta altrove http://www.peterrknight.com/woocommerce-tutorial-better-product-listings-for-imageless-products-part-1/ che includo. Potrebbe probabilmente essere sistemata o semplificata, ma sembra funzionare perfettamente rimuovendo l'immagine segnaposto predefinita per i prodotti che non hanno un'immagine:
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 );

questo è un modo semplice per rimuovere l'immagine predefinita del segnaposto. segui semplicemente i passaggi:
1: vai al plugin woocommerce
2: vai alla cartella templates
3: poi vai alla cartella single product
qui troverai il file product-image.php
.
aprilo e rimuovi solo il codice menzionato qui sotto
else {
echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<img src="%s" alt="Placeholder" />', woocommerce_placeholder_img_src() ), $post->ID );
}
il tuo problema sarà risolto :)
grazie
