Woocommerce - cum eliminăm imaginea placeholder implicită?

5 aug. 2013, 10:42:41
Vizualizări: 23.4K
Voturi: 2

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

0
Toate răspunsurile la întrebare 3
1

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' );
}
5 aug. 2013 17:20:23
Comentarii

Mulțumesc pentru asta, Helga (vikinga) :) Și mulțumesc că ți-ai luat timpul să explici cum și de ce funcționează - foarte util

speedypancake speedypancake
5 aug. 2013 19:02:32
1

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 );
5 aug. 2013 14:28:56
Comentarii

Mulțumesc pentru cod, funcționează excelent pentru produse. Există o modalitate de a-l modifica pentru a funcționa cu categorii de produse în loc?

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

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

19 dec. 2013 14:23:52
Comentarii

Nu ar trebui să modifici niciodată fișierele de bază ale WordPress, ale temei sau ale pluginurilor (cel puțin nu dacă există alte metode). De îndată ce actualizezi pluginul etc., modificările tale vor dispărea.

tfrommen tfrommen
19 dec. 2013 14:39:07