Aggiungere più di 50 variazioni automatiche Woocommerce

Tempo di lettura: 2 minuti

Una funzione molto utile che ci mette a disposizione WooCommerce è quella, in caso di prodotto variabile, di generare automaticamente le variazioni per il nostro prodotto.

Potete utilizzare questa funzione direttamente all’interno di un prodotto, selezionando prodotto variabile, aggiungendo gli opportuni attributi e selezionando dal menù a tendina la voce “Crea variazioni da tutti gli attributi”.

aumentare-numero-variazioni-woocommerce

Purtroppo però, di default, si ha diritto fino ad un massimo di 50 variazioni.

Quindi se ho bisogno di generare più di 50 variazioni come posso fare?

Vi faccio un esempio pratico.

Lavorando su un sito per una gioielleria, mi sono ritrovato con la necessità di inserire 2 campi:

Misura Lei: dalla 8 alla 30;
Misura Lui: dalla 8 alla 30.

Facendo un piccolo calcolo mi sono reso conto che le variazioni possibili erano esattamente 529. Impensabile farle a mano.

Tramite questo codice da aggiungere all’interno del file wp-config.php (che si trova all’interno della root principale del vostro sito), sono riuscito ad aumentare il numero di variazioni e quindi a generarle tutte in modo automatico.

//cambiare il numero 550 in base a quante variazioni servono
define( 'WC_MAX_LINKED_VARIATIONS', 150 );

Oppure è possibile anche creare una funzione da inserire nel file functions.php.

//cambiare il numero 550 in base a quante variazioni servono
add_action( 'init', 'cambiare_numero_variazione_woocommerce' );
function cambiare_numero_variazione_woocommerce(){
    define( 'WC_MAX_LINKED_VARIATIONS', 550 );
}

Mi raccomando, come sempre, fate prima un backup per evitare inconvenienti.

Basta cambiare il numero 550 con il numero di variazioni che desiderate.

Spero vi sia stato utile. Se avete esperienze in merito fatelo sapere nei commenti!

19 commenti su “Aggiungere più di 50 variazioni automatiche Woocommerce”

  1. Pierfrancesco Pellegrino

    Sì è vero che ne fa 50, ma se ripeto l’operazione ne fa ulteriori 50 e così via. Ma come faccio a capire quando le ha fatte tutte?

  2. Ciao non ho capito dove va inserito. Nel file functions.php non va inserita una funzione? A come descritto sembra vada nel wp-config. Mi puoi dare una delucidazione? Grazie!

    1. in effetti è così, va nel file wp-config in questo modo define( ‘WC_MAX_LINKED_VARIATIONS’, ‘550’ );
      Grazie per la dritta

  3. Salve,
    mi sa dire se c’è un limite di quantità di variazioni che sopporta wordpress? Ho un articolo con 26 per 26 per 14 = 9464 variazioni.
    Dopo poco che ho iniziato a caricarli non carica più 50 alla volta ma si incanta.
    Saluti, Klaus.

        1. Ok, grazie per l’aiuto.
          Ma poi WordPress e woocommerce sopportano quasi 10000 variazioni con 2 foto per variazione e testi diversi per ognuna o è fantascienza pensare che riescono a gestirli?

  4. Ciao Massimo,
    era quello che chiedevo al suo tempo ma non ricevendo risposte a riguardo mi sono messo ad inserirle, una ad una, per verificare passo dopo passo cosa succede. Ho dovuto cambiare e optare per la scelta di 626 articoli togliendo una delle 3 variazioni che avrebbe fatto si che le variazioni schizzassero a ben 9464. Inserendoli una ad una mi aiutava anche a non perdere il filo con così tanti singoli codici degli articoli e le rispettive foto . Alla fine, dopo circa 2 settimane, sono riuscito ad inserire e caricare tutto. Il sito è diventato un po’ lento ma non estremamente lento.

    1. Grazie per la tua risposta. Sicuramente la velocità del sito dipende anche dall’host che lo ospita. Io uso (ancora per poco se non risolvono) Aruba, ieri ho inserito con tanta pazienza e tempo un articolo che con le sue variazione a raggiunto 4000. Risultato? Navigazione lentissima, per poi bloccarsi definitivamente. Non posso più accedere al menu prodotti per modificarli ne navigare su questo articolo. Presumo sia un problema di memoria disponibile. Se lo unisci al fatto che ci vogliono ore per gestire tutte queste variazioni mi viene voglia di buttare tutto alle ortiche.

  5. Ciao Massimo,
    allora ho fatto bene a fermarmi a 676 e non provarci di fare le oltre 9000.
    Io il host l’ho tolto qualche anno fa da Aruba spostando il sito su un host privato dove ho appena aggiunto 1GB per raggiungere i 4GB.
    Insomma, è tutto un gran casino, costoso ed impegnativo in tutti i sensi.
    Tanti saluti, K.

    1. Emiliano Prelle

      Ciao Klaus e Massimo,

      scusatemi se intervengo in ritardo e vi ringrazio per il vostro contributo. Provo a dirvi la mia opinione e analisi in modo dettagliato.

      Facciamo un esempio pratico:

      Prodotto principale: Divano 3 posti
      Variazione 1: materiale (pelle, tessuto, lino)
      Variazione 2: Colore (blu, nero, verde, ecc. – immagina 30 colori)
      Variazione 3: finitura (noce, betulla ecc. – immagina 20 finiture)
      Variante 4: dimensioni (misurate in pollici o centimetri, diciamo 3 opzioni qui)

      Ok, quindi per calcolare il numero totale di variazioni create dalle 4 opzioni precedenti, moltiplichiamo il numero di opzioni l’una con l’altra. Quindi – 3 x 30 x 20 x 3 = 5400 variazioni solo da queste 4 opzioni.

      WooCommerce crea effettivamente tutti i 5400 prodotti come righe nella tabella wp_posts nel database e imposta post_parent sull’ID del prodotto principale.

      Ora, tecnicamente, leggere 5.400 prodotti da un database non dovrebbe essere lento, ma non è proprio quello che fa WooCommerce, li legge uno per uno e c’è una ragione per questo.

      La ragione di ciò sembra essere dovuta a possibili filtri PHP. È possibile per chiunque aggiungere codice PHP extra agli hook e ai filtri di WooCommerce, e alcuni di questi hook possono, ad esempio, escludere alcune delle variazioni in base all’utente, oppure possono regolare il prezzo in base al paese.

      Inoltre, potresti avere filtri abilitati, ad es. mostrami solo i divani “blu”, quindi WooCommerce deve controllare ciascuna delle varianti e filtrarle in modo che possa mostrare la fascia di prezzo corretta e decidere se mostrare il prodotto principale.

      Quindi, se carichi la pagina di archivio contenente questo prodotto, utilizzando Query Monitor, vedrai due cose importanti:

      • In primo luogo, vedrai una query che recupera 5.400 righe. Questa query sarà veloce, ad esempio 0,05 secondi o qualcosa del genere, perché è la velocità normale dei database.
      • Invece, se raggruppi le query per “componente”, vedrai WooCommerce fare più di 5.400 query SQL. Questa è una query per il prodotto principale, quindi una per ogni figlio più qualsiasi altra query standard eseguita da WooCommerce. Inoltre, dopo ogni query, analizza i dati utilizzando PHP e determina cosa dovrebbe essere visualizzato sulla pagina.

      Unica soluzione che mi sembra affidabile per avere prestazioni ottimali?
      Non utilizzare le variazioni e piuttosto utilizzare le “aggiunte” ai prodotti con sovrapprezzo.

      Anzichè combinare tutte le varianti possiamo per esempio assegnare un sovrapprezzo in base ad una determinata scelta.

      Per esempio, basandomi su 3 taglie: piccola, media e grande, potremmo avere regole di prodotto di:

      Piccola (nessun cambiamento)
      Medio (+ 10€)
      Grande (+ 20€)
      Quindi, se qualcuno sceglie una maglietta media, al prezzo verranno aggiunti 10€. È molto più semplice delle varianti di prodotto e anche molto più veloce.

      Conclusione:
      Concordo con Klaus, è tutto un casino, e richiede soprattutto tempo e risorse, ma questa è la via più funzionale al momento.

      1. Grazie Emiliano, un post veramente chiaro. Finalmente ho capito perché il mio sito si è impantanato dopo l’inserimento dei prodotti con migliaio di variazioni. È anche vero che l’host ci mette la sua, in questo caso Aruba non ha proprio delle performance alte. Avevo pensato anche io a una soluzione come quella che hai suggerito tu senza però aver chiaro perché è meglio fare così ma solo a intuito. Poi mi sono arenato perché vendendo prodotti come le lenti a contatto non ho ancora trovato una soluzione.

  6. Ciao Emiliano.
    Wau, che dire? Intanto grazie mille per le spiegazioni così approfondite
    Devo ammettere, che gran parte è arabo per me e dovrò farmelo premasticare e predigerire (forse adesso rendo l’idea a che livello sono in questo campo) da un ragazzo che mi aiuta saltuariamente con il sito.
    L’idea delle “agiunte” nel mio caso specifico credo non funziona. Io ho dei sigilli con doppi iniziali, 26 x 26 combinazioni = 676 combinazioni. A questi ho 14 diversi tipi di manici da offrire che si differenziano per forma e/o colore ma non per prezzo. I 676 combinazioni sono riuscito a caricare come variazioni. Il tutto funziona me è diventato un po’ lento. Inserire la scelta dei 14 (=9464 variazioni!) manici diversi l’ho per adesso abbandonato per la questione fattibilità/velocità.
    Cmq, giro il tuo commento a questo ragazzo e cerco di capire.
    Ancora grazie mille per l’aiuto.
    Tanti saluti,
    Klaus.

  7. Ciao,
    puoi dirmi esattamente i passaggi da fare per aumentare il numero delle variazioni?
    non ne capisco molto… esattamente dove devo andare per poi poter inserire la dicitura

    //cambiare il numero 550 in base a quante variazioni servono
    define( WC_MAX_LINKED_VARIATIONS, 550 );

    grazie

    1. Devi andare tramite FTP dove sono tutti i file del tuo WordPress e inserisci la stringa nel file wp-config.php
      Sotto dove vedi tutti i ‘define….’

      1. Io non so cosa sia un FTP ne’ un define… se gentilmente puoi spiegarmi, anche con degli scrrn… non ne capisco nulla di programmazione, e chi ha fatto il sito dice non sia possibile fare altrimenti. Puoi aiutarmi per favore?
        Grazie

    1. Emiliano Prelle

      Ciao Mauro,

      hai inserito correttamente il codice? Ho aggiornato l’articolo qualche giorno fa, prova a dare un’occhiata.

Lascia un commento