Dimensione personalizzata delle immagini in Woocommerce

5 mag 2015, 19:40:40
Visualizzazioni: 20.6K
Voti: 1

WooCommerce ha tre dimensioni di immagini predefinite. Ma poiché ci sono più di tre diverse dimensioni di contenitori, alcune immagini vengono sempre allungate o compresse. Di conseguenza, la qualità dell'immagine e la velocità della pagina ne risentono. WooCommerce utilizza, ad esempio, la dimensione del catalogo per le immagini del catalogo e le immagini dei prodotti correlati. WordPress offre un metodo semplice per generare dimensioni di immagini personalizzate. Ho provato a generare una dimensione per i miei prodotti correlati:

add_action( 'after_setup_theme', 'jmt_theme_setup' );
function jmt_theme_setup() {
    add_image_size( 'related-thumb', 274, 274, true );
}

C'è un modo per inserire questa dimensione nelle immagini dei prodotti correlati di WooCommerce?

Grazie per il vostro interesse.

Cordiali saluti theo

2
Commenti

Il problema reale riguarda il CSS di WooCommerce. Credo che abbiano tutte le loro immagini impostate come width: 100%; height: auto;, cosa che alcuni temi non tengono in considerazione. Suggerisco di sovrascrivere quel CSS con max-width: 100%; width: auto; invece.

Howdy_McGee Howdy_McGee
5 mag 2015 19:43:33

Sì, posso confermare. Max-width:100%; riduce il contenitore delle immagini dei prodotti correlati alle dimensioni del contenitore delle immagini del catalogo. Ma cambia anche il layout. Il mio obiettivo, o meglio la mia idea, è personalizzare la dimensione dell'immagine.

timholz timholz
5 mag 2015 19:49:52
Tutte le risposte alla domanda 3
3

Puoi sovrascrivere il CSS di WooCommerce con questo snippet, 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;
}
5 mag 2015 19:47:56
Commenti

Grazie per il codice, ma sovrascrivere il css non applica le dimensioni corrette dell'immagine. Imposta solo la dimensione del contenitore.

timholz timholz
5 mag 2015 19:58:20

Ho aggiunto img alle regole CSS, puoi provare ora?

m4n0 m4n0
5 mag 2015 20:00:34

Grazie per l'aggiornamento. Ma no, ora le proporzioni non sono più quadrate e il css influisce solo sul contenitore. Quello che cercavo di ottenere era inserire la dimensione appropriata dell'immagine. Ma come sto scoprendo ora, è piuttosto difficile da ottenere.

timholz timholz
5 mag 2015 20:11:12
12

Ci sono alcune opzioni tra cui scegliere quando si modificano le dimensioni delle immagini. Cambiare le immagini predefinite di WooCommerce è più difficile rispetto a un'installazione normale di WordPress poiché sono integrate con il plugin.


Modificare le dimensioni delle immagini dei prodotti correlati:

Ho testato questo metodo e sembra funzionare solo sui prodotti correlati (anche se sono sicuro che potrebbe essere espanso ad altre aree). Potresti ancora aver bisogno di usare Regenerate Thumbnails per ottenere le dimensioni corrette.

Dobbiamo inserire tutto in un filtro wp:

function woo_init() {
    // Le funzioni seguenti vanno qui...
}
add_action( 'wp', 'woo_init' );

Sono riuscito a saltare la prima parte di questo, impostando la variabile di query e funzionava comunque, ma poiché utilizza un template generico content-product.php non mi fiderei, quindi imposteremo una variabile di query per assicurarci di modificare solo la dimensione dell'immagine per i prodotti correlati:

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;
    } );
}

Successivamente dobbiamo rimuovere l'azione predefinita loop_product_thumbnail e sostituirla con una nostra. Verifichiamo che la variabile di query related_products sia impostata e TRUE prima di servire la nostra nuova immagine, altrimenti serviamo l'immagine predefinita.

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 );    // La nostra nuova dimensione dell'immagine
        } else {
            echo woocommerce_get_product_thumbnail();   // Dimensione predefinita dell'immagine
        }
    },
    10
);

CSS

WooCommerce utilizza width: 100%; height: auto; su tutte le immagini. Potresti cambiarlo in max-width: 100%; width: auto; height: auto; e giocare con i margini / numero di colonne per ottenere l'aspetto desiderato.

Cambiare le dimensioni iniziali delle immagini

Puoi cambiare le dimensioni effettive delle immagini utilizzate da WooCommerce seguendo questi passaggi:

  • Accedi a WordPress
  • Vai su WooCommerce -> Scheda Prodotti -> Visualizzazione (Sottoscheda)
  • Verso il fondo puoi impostare le dimensioni delle immagini per:
    • Immagini del catalogo
    • Immagine del prodotto singolo
    • Miniature dei prodotti
  • Infine, puoi installare Regenerate Thumbnails per ottenere le nuove dimensioni.

Un altro metodo è impostare queste dimensioni durante l'installazione:

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
    );

    // Dimensioni delle immagini
    update_option( 'shop_catalog_image_size', $catalog );       // Miniature delle categorie di prodotti
    update_option( 'shop_single_image_size', $single );         // Immagine del prodotto singolo
    update_option( 'shop_thumbnail_image_size', $thumbnail );   // Miniature della galleria immagini
}

add_action( 'after_switch_theme', 'yourtheme_woocommerce_image_dimensions', 1 );

Link di riferimento per WooCommerce:

5 mag 2015 19:58:00
Commenti

Grazie. Ho provato tutto questo. Ma apparentemente l'unica soluzione è scendere a compromessi. Questo significa una dimensione per le immagini correlate e del catalogo. Mi chiedevo semplicemente se ci fosse un modo semplice per aggiungere una quarta dimensione per le immagini. Saluti, Theo

timholz timholz
5 mag 2015 20:04:54

@theo - Sfortunatamente, non che io sappia. Teoricamente, potresti sovrascrivere il Template di WooCommerce con uno tuo, creare la tua WP_Query e generare lo stesso loop ma chiamando la tua immagine personalizzata in quel modo. Potrebbe esserci un altro modo che non ho mai provato, ma modificherò la mia domanda con questa possibilità e magari potresti avere fortuna.

Howdy_McGee Howdy_McGee
5 mag 2015 20:19:24

Grazie mille per questo. Proverò e ti farò sapere.

timholz timholz
5 mag 2015 21:28:05

Ok, ho provato e non ci sono riuscito. Immagino che dovrò accettare questa limitazione. Ma grazie per tutti i suggerimenti.

timholz timholz
6 mag 2015 21:06:08

@timholz Non ho un'installazione attiva di WooCommerce con cui poter sperimentare. Quando avrò l'opportunità proverò e vedrò cosa riesco a trovare. Se scoprirò qualcosa ti taggherò e ti farò sapere oppure, se troverai una soluzione migliore, postala qui! Buona fortuna!

Howdy_McGee Howdy_McGee
6 mag 2015 21:07:30

Ciao Howdy Mc Gee, grazie per la tua risposta. Per il momento ho assegnato le dimensioni più grandi per le immagini correlate e del catalogo. Sembra accettabile, ma perde un po' di velocità poiché le immagini del catalogo devono essere ridimensionate. Comunque, grazie per il tuo interessamento. :)theo

timholz timholz
7 mag 2015 11:22:12

@timholz Ho trovato una soluzione e ho modificato la mia risposta aggiungendo la soluzione all'inizio. Ho preso la teoria originale e l'ho testata, dovrebbe funzionare per i prodotti correlati e probabilmente potresti farla funzionare anche per altri prodotti. Se hai visto che funziona per te, non dimenticare di cliccare sul segno di spunta per mostrare ai futuri lettori che ha funzionato per te!

Howdy_McGee Howdy_McGee
7 mag 2015 17:38:42

– Grazie per il tuo impegno. È troppo tardi adesso. Ma domani testerò il codice e farò sapere.

timholz timholz
8 mag 2015 22:05:40

Ciao Howdy McGee – non sono riuscito ad aspettare fino a domani. Il tuo codice funziona alla grande. È la condizione che fa la magia. Grazie mille per il tuo tempo e impegno. Il sito su cui sto lavorando è in modalità sviluppo, ma non appena sarà pronto ti manderò un link (nel caso fossi interessato). Grazie mille. Saluti, Theo P.S.: Ho provato a votarti positivamente, ma purtroppo la mia reputazione è insufficiente. Quindi, ti voto positivamente qui. Risposta di altissimo livello.

timholz timholz
8 mag 2015 23:14:56

@timholz Sono contento che abbia funzionato per te! Assicurati di cliccare il segno di spunta così i futuri lettori sapranno che questa risposta ha risolto il tuo problema (i commenti vengono nascosti dopo un po'). Suggerirei anche di tornare alle altre domande che hai fatto in passato e fare lo stesso (anche se le hai già risolte). È un modo semplice e ottimo per guadagnare reputazione e mostrare la tua gratitudine!

Howdy_McGee Howdy_McGee
8 mag 2015 23:18:03

ecco il link:www.j-m-t.ch Ora ho le dimensioni appropriate delle immagini per i prodotti del catalogo e quelli correlati. grazie

timholz timholz
9 mag 2015 13:08:07

ho notato una cosa. I prodotti in evidenza (quando il layout è impostato a larghezza piena) ovviamente utilizzano la dimensione del catalogo e quindi risultano sfocati. Ho provato ad adattare lo stesso metodo per questa classe ma apparentemente vengono gestiti in modo diverso.

timholz timholz
11 mag 2015 12:04:58
Mostra i restanti 7 commenti
0

Penso sia un problema di CSS perché WooCommerce (purtroppo) utilizza width: 100% quando (a mio avviso) dovrebbe usare max-width: 100%. Prova a sovrascrivere la larghezza con width: auto, dovrebbe risolvere.

5 mag 2015 19:48:11