1. Casa
  2. Knowledge Base
  3. WooCommerce Wholesale Order Form
  4. Risoluzione dei problemi dello shortcode WooCommerce Wholesale Order Form

Risoluzione dei problemi dello shortcode WooCommerce Wholesale Order Form

Hai aggiunto il codice breve del modulo d'ordine all'ingrosso a una pagina e ora il modulo è mancante, mostra un errore o interrompe la pagina? La maggior parte dei casi si riduce al codice breve stesso, allo stato del modulo, a un modello di page builder o a un conflitto con un altro plugin. Questa guida ti accompagna attraverso ogni sintomo in modo da poter trovare la causa e far riapparire il modulo.

Prima di iniziare: controlla la sintassi dello shortcode

Nella versione 3 di WooCommerce Wholesale Order Form, il formato corretto dello shortcode è:

[wwof_product_listing id="XX"]

dove XX è l'ID numerico del tuo modulo d'ordine. Un codice breve inserito senza l'attributo id, o che utilizza un ID errato, mostra un messaggio di errore o non mostra nulla.

Per trovare lo shortcode corretto per il tuo modulo:

  1. Vai su Wholesale → Order Forms nella tua bacheca WordPress.
  2. Apri il modulo che desideri incorporare.
  3. Copia lo shortcode mostrato nell'editor del modulo.
  4. Incollalo nella pagina in cui desideri che appaia il modulo.
Elenco dei moduli d'ordine in WP Admin che mostra il modulo di elenco ordini all'ingrosso, il suo shortcode, la posizione e lo stato di pubblicazione
Editor del modulo d'ordine che mostra le impostazioni del modulo e il campo dello shortcode wwof_product_listing

Se hai utilizzato [wwof_order_form] senza un attributo id, quel formato di shortcode non è più in uso. Sostituiscilo con lo shortcode copiato dall'editor del modulo.

Problemi comuni e soluzioni

La pagina mostra "Nessun ID del modulo d'ordine specificato", "non esiste" o "Si è verificato un errore di configurazione"

Gli amministratori che vedono "Nessun ID del modulo d'ordine specificato." stanno utilizzando il codice breve senza l'attributo id richiesto. Gli amministratori che vedono un messaggio come "L'ID del modulo d'ordine 123 non esiste!" stanno utilizzando un ID che non corrisponde a nessun modulo d'ordine, ad esempio l'ID di un modulo che è stato eliminato. In entrambi i casi, sostituisci il codice breve con quello copiato da All'ingrosso → Moduli d'ordine.

I visitatori non amministratori vedono invece "Si è verificato un errore di configurazione in questo modulo. Si prega di contattare l'amministratore del sito.", sia per un ID mancante che per un ID errato. Questo è lo stesso problema sottostante. Correggi il codice breve e il messaggio scomparirà per entrambi.

Visualizzazione front-end del messaggio di errore di configurazione WWOF: "Si è verificato un errore di configurazione in questo modulo. Si prega di contattare l'amministratore del sito."

Il modulo d'ordine non viene visualizzato affatto

I clienti possono vedere un modulo d'ordine solo quando il suo stato è Pubblicato. Un modulo in bozza viene ancora mostrato agli amministratori e ai gestori del negozio, quindi la pagina può apparire corretta mentre sei connesso. I clienti e i visitatori disconnessi vedono invece un messaggio di "Accesso negato" ("Non hai il permesso di visualizzare questo modulo d'ordine"), quindi un modulo in bozza spesso sembra un problema di autorizzazione piuttosto che un modulo mancante. Per vedere cosa vedono i tuoi clienti, apri la pagina in una finestra privata o in incognito.

  1. Vai su Commercio all'ingrosso → Moduli d'ordine.
  2. Controlla lo stato del modulo. Se mostra Bozza, aprilo e fai clic su Pubblica.
Elenco dei moduli d'ordine di Wholesale Suite che mostra un modulo con stato Bozza accanto a un modulo Pubblicato

Il modulo rimane vuoto all'interno di un modello di page builder

La pagina viene caricata, ma lo spazio in cui dovrebbe trovarsi il modulo d'ordine rimane vuoto. Ciò accade quando il codice breve si trova in un modello di tema, come un modello di Divi Theme Builder o un modello di tema Elementor Pro, invece che nel contenuto della pagina stessa.

Il modulo d'ordine all'ingrosso carica il suo script del modulo solo quando trova il codice breve nel contenuto della pagina visualizzata. Un modello è memorizzato separatamente dalla pagina, quindi il plugin non vede il codice breve lì. Il contenitore del modulo vuoto viene stampato, ma lo script che lo riempie non viene mai caricato.

La soluzione più semplice è inserire il codice breve nel contenuto della pagina stessa, ad esempio nell'editor a blocchi o in un modulo del builder su quella pagina. Se desideri mantenere il modulo nel modello, aggiungi uno snippet di codice breve che indica al plugin di caricare il modulo in quella pagina.

Per aggiungere lo snippet:

  1. Vai su Wholesale → Moduli d’ordine e annota l’ID del tuo modulo. È il numero nel codice breve del modulo, ad esempio 123 in [wwof_product_listing id="123"].
  2. Annota lo slug della pagina che mostra il modello, ad esempio wholesale-ordering per il tuo sito.com/wholesale-ordering/. Funziona anche l’ID della pagina.
  3. Aggiungi lo snippet qui sotto con un plugin per snippet di codice come WPCode, oppure aggiungilo al file functions.php del tuo child theme.
  4. Sostituisci wholesale-ordering con lo slug della tua pagina e 123 con l’ID del tuo modulo, quindi salva.
  5. Svuota la cache del tuo sito e ricarica la pagina.
add_filter( 'wwof_force_load_form_posts', function ( $form_posts ) {
	// Replace 'wholesale-ordering' with the slug or ID of the page that shows the form.
	if ( is_page( 'wholesale-ordering' ) ) {
		// Replace 123 with your order form ID.
		$form_posts[123] = \RymeraWebCo\WWOF\Factories\Order_Form::get_instance( get_post( 123 ) );
	}

	return $form_posts;
} );

Uno snippet può caricare tutti i moduli di cui hai bisogno. Aggiungi una riga per modulo all’interno del controllo per la pagina che lo mostra:

add_filter( 'wwof_force_load_form_posts', function ( $form_posts ) {
	if ( is_page( 'wholesale-ordering' ) ) {
		$form_posts[123] = \RymeraWebCo\WWOF\Factories\Order_Form::get_instance( get_post( 123 ) );
	}

	if ( is_page( 'trade-restock' ) ) {
		$form_posts[456] = \RymeraWebCo\WWOF\Factories\Order_Form::get_instance( get_post( 456 ) );
		$form_posts[789] = \RymeraWebCo\WWOF\Factories\Order_Form::get_instance( get_post( 789 ) );
	}

	return $form_posts;
} );

Su una pagina in cui lo snippet carica i moduli, il plugin utilizza l’elenco dello snippet e smette di cercare codici brevi nel contenuto della pagina. Se quella pagina ha anche un modulo d’ordine nel suo contenuto, aggiungi anche quel modulo allo snippet.

Il controllo is_page() corrisponde alle normali pagine di WordPress. Se il tuo modello viene visualizzato su un altro tipo di schermata, modifica il controllo per corrispondere a quella schermata.

Appare un errore critico di PHP quando lo shortcode è sulla pagina

Errori critici che appaiono solo quando lo shortcode è presente sono causati da un conflitto di plugin, un plugin di caching o ottimizzazione che gestisce in modo errato il bundle JavaScript del modulo d'ordine, o un limite di memoria PHP troppo basso. Procedi con i passaggi seguenti in ordine.

Passaggio 1: abilita WP_DEBUG per vedere l'errore effettivo

  1. Apri il file wp-config.php del tuo sito (situato nella directory principale di WordPress).
  2. Trova la riga define( 'WP_DEBUG', false ); e cambia false in true.
  3. Subito sotto quella riga, aggiungi: define( 'WP_DEBUG_LOG', true );
  4. Salva il file e ricarica la pagina che genera l'errore.
  5. Apri wp-content/debug.log.
  6. Annota il messaggio di errore esatto e il percorso del file a cui punta.

Tieni a portata di mano questo messaggio di errore e percorso del file. Ti serviranno se contatti l’assistenza.

Vedi Debugging in WordPress per i dettagli completi sulle costanti disponibili.

Passaggio 2: controlla il limite di memoria PHP

Il modulo d'ordine carica un'applicazione JavaScript che effettua diverse richieste in background al tuo server. Se la memoria PHP si esaurisce durante questo processo, può verificarsi un errore fatale. Il minimo raccomandato per i siti WooCommerce, inclusi quelli che eseguono il Modulo d'ordine per grossisti, è 256 MB.

Per verificare il tuo limite attuale, vai su WooCommerce → Stato, apri la scheda Stato del sistema e cerca la riga Limite di memoria di WordPress. Se è inferiore a 256 MB, contatta il tuo provider di hosting per aumentarlo, oppure aggiungi la seguente riga a wp-config.php:

define( 'WP_MEMORY_LIMIT', '256M' );
Scheda Stato di sistema di WooCommerce che mostra la riga del limite di memoria di WordPress

Passaggio 3: passa a un tema predefinito

Un tema che aggiunge JavaScript in conflitto o sovrascrive i modelli di WooCommerce può interrompere il modulo d'ordine. Passare a un tema predefinito lo esclude rapidamente.

  1. Vai su Aspetto → Temi nell'amministrazione di WordPress.
  2. Attiva Storefront o Twenty Twenty-Four.
  3. Ricarica la pagina con lo shortcode.

Se l'errore scompare con il tema predefinito attivo, il tuo tema originale è la causa del conflitto. Riattivalo e condividi il log di debug con il team di supporto del tuo tema.

Passaggio 4: isola il plugin in conflitto

  1. Vai su Plugin → Plugin installati.
  2. Disattiva tutti i plugin tranne WooCommerce e i tuoi plugin Wholesale Suite: WooCommerce Wholesale Prices, WooCommerce Wholesale Order Form e WooCommerce Wholesale Prices Premium se lo utilizzi.
  3. Ricarica la pagina con lo shortcode. Se l'errore è scomparso, la causa è un conflitto tra plugin.
  4. Riattiva i plugin uno alla volta, ricaricando la pagina dopo ciascuno. L'ultimo plugin che hai attivato quando l'errore ricompare è quello in conflitto.
Elenco dei plugin installati di WordPress che mostra i plugin attivi, inclusi WooCommerce e WooCommerce Wholesale Order Form

Conflitti di plugin noti e soluzioni alternative

Diversi plugin di ottimizzazione e caching richiedono una gestione speciale per funzionare insieme al modulo d'ordine. Il plugin include una compatibilità integrata per alcuni di questi, il che significa che non sono necessari passaggi manuali per essi.

WP Rocket. Il Modulo d'ordine per grossisti esclude automaticamente le pagine che contengono il suo shortcode dalla cache delle pagine di WP Rocket. Non è necessaria alcuna regola di esclusione manuale.

SiteGround Optimizer. Il plugin esclude automaticamente i suoi script dalla combinazione e minificazione di JavaScript e CSS di SiteGround Optimizer. Se riscontri ancora problemi dopo aver confermato che questo è il conflitto, disabilita manualmente Combina file JavaScript e Minifica file JavaScript (e le opzioni equivalenti di combinazione e minificazione CSS) per la pagina contenente il modulo d’ordine.

Altri plugin di caching (WP Super Cache, W3 Total Cache, LiteSpeed Cache, ecc.). Aggiungi l'URL della pagina del modulo d'ordine all'elenco di esclusione della cache del plugin e disabilita la minificazione e la combinazione di JavaScript per quella pagina.

Page builder (Elementor, Divi, WPBakery). Se il modulo si trova in un modello di tema e rimane vuoto, segui i passaggi in Il modulo rimane vuoto all’interno di un modello di page builder sopra. Per Breakdance, il plugin legge i codici brevi dagli elementi di Breakdance dalla versione 3.0.9 di WooCommerce Wholesale Order Form in poi, quindi non è necessario alcun passaggio aggiuntivo.

Cosa includere quando si contatta il supporto

Se l’errore persiste dopo aver seguito i passaggi precedenti, il team di supporto di Wholesale Suite necessita dei seguenti dettagli per indagare:

  • Il messaggio di errore esatto da wp-content/debug.log
  • Un elenco dei tuoi plugin attivi al momento dell'errore
  • La tua versione di PHP e il limite di memoria attuale (visibili nella scheda Stato del sistema sotto WooCommerce → Stato)
  • Il nome e la versione del tema attivo
  • Eventuali modifiche apportate al sito poco prima della comparsa dell'errore

Domande frequenti

Qual è lo shortcode corretto per il modulo d'ordine all'ingrosso?

Il codice breve corretto nella versione 3 è [wwof_product_listing id="XX"], dove XX è l'ID del modulo d'ordine. Copialo direttamente dall'editor del modulo in Wholesale → Order Forms.

Perché il modulo d'ordine mostra "Si è verificato un errore di configurazione in questo modulo"?

Questo messaggio appare quando l'attributo id manca nello shortcode, o quando l'ID del modulo d'ordine specificato non esiste. Verifica che il tuo shortcode includa l'id corretto copiato dall'editor del modulo.

Perché il mio modulo d'ordine non viene visualizzato anche se lo shortcode è corretto?

La causa più comune è che il modulo è ancora salvato come Bozza. Un modulo bozza viene mostrato agli amministratori e ai gestori del negozio, ma i clienti e i visitatori disconnessi vedono un messaggio "Accesso negato" finché il modulo non viene Pubblicato. Apri il modulo in Wholesale → Order Forms e fai clic su Pubblica. I visitatori disconnessi potrebbero anche vedere un messaggio "Accesso negato" se il modulo è limitato a ruoli specifici.

Devo configurare il mio plugin di caching per farlo funzionare con il modulo d'ordine?

Per WP Rocket e SiteGround Optimizer, non è necessaria alcuna configurazione manuale. Il plugin gestisce automaticamente la compatibilità. Per altri plugin di caching, aggiungi la pagina del modulo d'ordine all'elenco delle esclusioni della cache e disabilita la minificazione di JavaScript per quella pagina.

Perché il modulo d'ordine rimane vuoto nel mio template Divi o Elementor?

Il plugin carica il modulo solo quando trova il codice breve nel contenuto della pagina stessa, e un template del generatore di temi viene archiviato separatamente. Sposta il codice breve nella pagina o aggiungi lo snippet wwof_force_load_form_posts da Il modulo rimane vuoto all'interno di un template del page builder sopra.

Posso usare il modulo d'ordine per effettuare un ordine per uno dei miei clienti?

No. Il modulo d'ordine mostra sempre i prezzi per l'account attualmente connesso e non esiste una modalità per fare acquisti come cliente sul front-end. Se apri il modulo mentre sei connesso come amministratore, vedrai i prezzi del tuo account. Per effettuare un ordine al prezzo all'ingrosso di un cliente, utilizza invece un ordine dal backend. Con Wholesale Prices Premium attivo, vai su WooCommerce → Ordini, fai clic su Aggiungi ordine, seleziona il cliente e spunta Applica prezzi all'ingrosso. Per i passaggi completi, consulta come creare ordini all'ingrosso manuali.

Serve aiuto?

Se hai una domanda o riscontri problemi, siamo qui per aiutarti.

Questo articolo è stato utile?

Articoli Correlati

Completa il tuo acquisto