Home>Guide>Come aggiungere campi personalizzati in WooCommerce

Come aggiungere campi personalizzati in WooCommerce


Come aggiungere campi personalizzati in WooCommerce


Quante volte ti sarà capitato di voler aggiungere dettagli ai tuoi prodotti in WooCommerce accorgendoti che non esisteva la possibilità di farlo? Con questa guida, ti insegnerò a personalizzare i campi presenti nel backend di WooCommerce ed ampliare i campi messi a disposizione. Potrai così aggiungere particolari specifici ed offrire agli utenti la possibilità di scegliere con più dettagli a disposizione.

  • Leggi l'articolo, ti bastano solo 1 minuto, 15 secondi
    Sei di fretta? Scarica il PDF e consultalo quando vuoi!

Visualizzare il nuovo campo

Creare il nuovo campo è molto semplice, ci sono delle funzioni di WooCommerce che fanno proprio al caso nostro!
In particolare, WooCommerce ci mette a disposizione sei funzioni utili a generare nuovi campi input, che analizziamo nel dettaglio:

woocommerce_wp_text_input
Genera un campo di tipo testo
I parametri accettati sono:

  • placeholder: serve per visualizzare un breve suggerimento all’interno del campo
  • class: le classi da assegnare al campo
  • style: lo stile css da inserire inline
  • wrapper_class: le classi da assegnare al contenitore del campo
  • value: il valore di default che il campo deve avere
  • name: il nome del campo
  • type: il tipo di input, come definito da HTML5 (text, password, email, number, ecc.)
  • data_type: la tipologia di input desiderato, utile per la validazione. Può essere:
    • price
    • decimal
    • stock
    • url
  • custom_attributes: un array associativo chiave => valore che specifica gli eventuali attributi extra da assegnare al campo (es: ‘maxlength’ => 10)
  • id: l’identificativo univoco del campo
  • label: il testo che verrà visualizzato come etichetta del campo
  • description: un breve testo di aiuto alla compilazione del campo
  • desc_tip: come visualizzare la description. Può essere:
    • true: la descrizione viene visualizzata come icona con tooltip
    • false: la descrizione viene visualizzata semplicemente come testo sotto il campo

woocommerce_wp_textarea_input
Genera un’area di testo
I parametri accettati sono:

  • placeholder: serve per visualizzare un breve suggerimento all’interno del campo
  • class: le classi da assegnare al campo
  • style: lo stile css da inserire inline
  • wrapper_class: le classi da assegnare al contenitore del campo
  • value: il valore di default che il campo deve avere
  • custom_attributes: un array associativo attributo => valore che specifica gli eventuali attributi extra da assegnare al campo (es: ‘maxlength’ => 10)
  • id: l’identificativo univoco del campo
  • label: il testo che verrà visualizzato come etichetta del campo
  • description: un breve testo di aiuto alla compilazione del campo
  • desc_tip: come visualizzare la description. Può essere:
    • true: la descrizione viene visualizzata come icona con tooltip
    • false: la descrizione viene visualizzata semplicemente come testo sotto il campo

woocommerce_wp_select
Genera un menu a tendina
I parametri accettati sono:

  • class: le classi da assegnare al campo
  • style: lo stile css da inserire inline
  • wrapper_class: le classi da assegnare al contenitore del campo
  • value: il valore di default che il campo deve avere
  • name: il nome del campo
  • custom_attributes: un array associativo chiave => valore che specifica gli eventuali attributi extra da assegnare al campo (es: ‘maxlength’ => 10)
  • id: l’identificativo univoco del campo
  • label: il testo che verrà visualizzato come etichetta del campo
  • description: un breve testo di aiuto alla compilazione del campo
  • desc_tip: come visualizzare la description. Può essere:
    • true: la descrizione viene visualizzata come icona con tooltip
    • false: la descrizione viene visualizzata semplicemente come testo sotto il campo
  • options: un array associativo valore => etichetta che contiene le opzioni che avremo nella select

woocommerce_wp_radio
Genera un campo di scelta singola tra le alternative proposte
I parametri accettati sono:

  • class: le classi da assegnare al campo
  • style: lo stile css da inserire inline
  • wrapper_class: le classi da assegnare al contenitore del campo
  • value: il valore di default che il campo deve avere
  • name: il nome del campo
  • id: l’identificativo univoco del campo
  • label: il testo che verrà visualizzato come etichetta del campo
  • description: un breve testo di aiuto alla compilazione del campo
  • desc_tip: come visualizzare la description. Può essere:
    • true: la descrizione viene visualizzata come icona con tooltip
    • false: la descrizione viene visualizzata semplicemente come testo sotto il campo
  • options: un array associativo valore => etichetta che contiene le opzioni tra cui scegliere

woocommerce_wp_checkbox
Genera un campo di selezione opzione
I parametri accettati sono:

  • class: le classi da assegnare al campo
  • style: lo stile css da inserire inline
  • wrapper_class: le classi da assegnare al contenitore del campo
  • value: il valore di default che il campo deve avere
  • cbvalue: il valore che la checkbox assume se attiva
  • name: il nome del campo
  • custom_attributes: un array associativo attributo => valore che specifica gli eventuali attributi extra da assegnare al campo
  • id: l’identificativo univoco del campo
  • label: il testo che verrà visualizzato come etichetta del campo
  • description: un breve testo di aiuto alla compilazione del campo
  • desc_tip: come visualizzare la description. Può essere:
    • true: la descrizione viene visualizzata come icona con tooltip
    • false: la descrizione viene visualizzata semplicemente come testo sotto il campo

woocommerce_wp_hidden_input
Genera un campo di testo nascosto
I parametri accettati sono:

  • class: le classi da assegnare al campo
  • value: il valore di default che il campo deve avere
  • id: l’identificativo univoco del campo

I parametri vengono passati alla funzione in un array associativo.

Ma come decidere in quale delle tabs di WooCommerce inserire il nuovo campo?


Scegliere la tab

Per scegliere dove visualizzare il nuovo campo, ti è sufficiente utilizzare uno degli hooks messi a disposizione da WooCommerce:

woocommerce_product_options_general_product_data: inserisce nella tab GENERALE
woocommerce_product_options_inventory_product_data: insersce nella tab INVENTARIO
woocommerce_product_options_shipping: inserisce nella tab SPEDIZIONE
woocommerce_product_options_related: inserisce nell tab ARTICOLI COLLEGATI
woocommerce_product_options_attributes: inserisce nella tab ATTRIBUTI
woocommerce_product_options_advanced: inserisce nella tab AVANZATO


Mettiamo insieme il tutto

Ecco un esempio che genera un campo di testo e lo aggiunge alla tab GENERALE, ti basta inserirlo nel file functions.php del tuo tema, che trovi nello spazio FTP del tuo sito, in:

wp-content/themes/{nome_del_tema}/

// Aggiunge un nuovo campo ai prodotti di WooCommerce
add_action( 'woocommerce_product_options_general_product_data', function() {
    woocommerce_wp_text_input( array(
		'id'			=> '_campo_personalizzato',
		'name'			=> 'campo_personalizzato',
		'label'			=> __( 'Campo personalizzato', 'woocommerce' ),
		'description'	=> __( 'Descrizione per il tuo campo personalizzato', 'woocommerce' ),
		'desc_tip'		=> true,
		'placeholder'	=> __( 'Inserisci qui il valore del tuo campo personalizzato', 'woocommerce' )
	) );
} );

Ora che hai aggiunto con successo il tuo primo campo personalizzato, hai però bisogno di salvarne il valore nel database associandolo al relativo prodotto.


Salvare il valore nel database

Visualizzare il campo non è sufficiente, hai bisogno di salvare il suo valore, altrimenti perderesti le modifiche effettuate al campo quando crei o modifichi un prodotto.
WooCommerce ci mette a disposizione l’hook woocommerce_process_product_meta che si occupa di processare i dati inviati dal form di inserimento/aggiornamento dei prodotti relativo ai metadata del prodotto stesso.

Aggiungi al file functions.php del tuo tema il codice:

// Salva il valore del campo personalizzato
add_action( 'woocommerce_process_product_meta', function( $post_id ) {
    if ( ! empty( $_POST['campo_personalizzato'] ) ) {
        update_post_meta( $post_id, '_campo_personalizzato', esc_attr( $_POST['campo_personalizzato'] ) );
    }
} );

Nella funzione, puoi eventualmente modificare i dati derivanti dal $_POST a piacimento o effettuare i dovuti controlli su di essi.
Non dimenticare, a seconda del tipo di campo, di fare l’escape dei valori, così da mettere al sicuro i tuoi dati ed il tuo sito.


Visualizzare il nuovo campo nel frontend

Bene, ora che è tutto pronto e funzionante, non ti resta che utilizzare il nuovo campo nel tema del tuo WordPress, utilizzando la funzione get_post_meta().
È sufficiente inserire nel file di template nel punto desiderato il seguente codice:

// Recupera il campo "campo_personalizzato"
echo get_post_meta( $post_id, 'campo_personalizzato' );

La funzione get_post_meta( $post_id, $key, $single ) accetta tre parametri:

$post_id: parametro obbligatorio, è l’ID del post di cui vogliamo recuperare il campo
$key: è il nome del campo che desideri recuperare. È opzionale, e nel caso non venga specificato, la funzione restituisce tutti i campi associati all’ID passato come primo parametro.
$single: valore booleano che indica se restituire una valore singlo oppure no (nel caso il campo richiesto abbia valori multipli salvati)



Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Creare un widget personalizzato sulla dashboard di WordPress

Creare un widget personalizzato sulla dashboard di WordPress


Ecco come migliorare la dashboard nel backend di WordPress, aggiungendo un widget personalizzato che visualizzi le informazioni che occorre avere in primo piano.

Come tradurre WooCommerce in italiano

Come tradurre WooCommerce in italiano


Ecco una breve guida su come tradurre WooCommerce in italiano per renderlo fruibile al 100% a tutti i tuoi clienti.

Oppure cerca tra gli articoli correlati


Qualche dubbio? Ecco le opinioni degli altri utenti

Ottimo articolo, mi hai risolto un grande problema, solo 2 cose, come faccio a far vedere il campo che ho creato nella scheda prodotto? E posso aggiungere più di un campo (text in questo caso) nella stessa tab? Perché se ne aggiungo più di 1 la pagina mi resta bianca.
Grazie 🙂

In risposta a carla

Ciao Carla, grazie mille! Non c’è alcun problema ad aggiungere più di un campo, la pagina bianca è dovuta probabilmente a qualche errore di sintassi. Prova ad attivare la modalità di debug (magari dai un’occhiata qui: https://code4life.it/come-fare-il-debug-su-wordpress/) per riuscire ad isolare il problema.
Per visualizzare il nuovo campo, puoi usare la funzione get_post_meta(), nei prossimi giorni magari dedicherò una guida alla tua richiesta

Ho fatto tutto quanto hai scritto, inserendo un campo per il nome del produttore nella schermata "Generale" del prodotto. Mi visualizza il campo, con etichetta e info, però quando valorizzo il campo non me lo salva…

In risposta a Paolo

Ciao Paolo,
grazie per il tuo feedback! La sezione che si occupa di immagazzinare i dati è nel paragrafo “Salvare il valore nel database”, quindi partirei ad analizzare quello snippet. Hai provato ad attivare la modalità debug di WordPress per verificare se si genera un errore? Prova a dare un’occhiata qui:
https://code4life.it/guide/come-fare-il-debug-su-wordpress/
Spero di esserti stato di aiuto…

Salve, innanzitutto grazie per la risposta. Ho attivato il debug come da voi consigliato ma la risposta del server non credo riguardi il mancato salvataggio del valore del campo nel db, in quanto la risposta del server è:

[CONTENUTO PRIVATO]

Se aveste altri consigli ve ne sarei grato.

In risposta a Paolo

Buonasera Paolo,
dal log inviato non sembrano esserci problematiche legate al salvataggio del campo.
Prova a postare le funzioni inserite, così da poterci dare un’occhiata.

Forse il codice per il salvataggio non va inserito subito dopo il codice per l'inserimento del campo nel file functions.php del tema?

Risolto: in realtà avete aggiunto due underscore non richiesti: il codice che ha funzionato è: add_action( 'woocommerce_process_product_meta', function( $post_id ) {
if ( ! empty( $_POST['produttore'] ) ) {
update_post_meta( $post_id, '_produttore', esc_attr( $_POST['produttore'] ) );
}
} );
In ogni caso post prezioso. grazie!

In risposta a Paolo

Ciao Paolo,
hai perfettamente ragione! Effettivamente sui $_POST non c’è bisogno degli underscore… Grazie per la segnalazione, articolo corretto adesso!

Ciao, ho seguito la tua guida, funziona quasi tutto, in aggiungi/modifca prodotto compare il campo personalizzato. Compilo il campo e dopo aver fatto invio viene memorizzato sul db. Non riesco solo a far visualizzare il nuovo campo nella scheda prodotto. Qual è il file di template da utilizzare per inserire il codice ultimo di visualizzazione. Ho fatto varie prove ma niente. Grazie

In risposta a Matteo

Ciao Matteo,
il template in cui inserire il codice dipende… Considera che i files originali relativi alla scheda prodotto sono diversi e sono contenuti nella cartella wp-content/plugins/woocommerce/templates/single-product. A questo però, va aggiunto che la maggior parte dei temi ne effettua l’override (come previsto da WooCommerce) e quindi dovresti trovare le copie “rivisitate” nella cartella wp-content/themes/{nome_del_tuo_tema}/woocommerce/single-product.
Qui va selezionato il template a seconda della posizione in cui vorresti far uscire il campo personalizzato: ad esempio, per visualizzarlo sotto il prezzo, il file giusto è price.php.

Articolo molto interessante ed esaustivo, in caso di sito multilingue con WPML come faccio a cambiare i contenuti in funzione delle lingue? Grazie

In risposta a Luca

Ciao Luca,
Con WPML assicurati di avere WooCommerce Multilingual (estensione ufficiale di WPML) e vai alle impostazioni su:
WPML -> Translation Management -> Multilingual Content Setup -> Custom fields translation.
Impostando come “traducibile” il tuo campo personalizzato, dovrebbe funzionare tutto a dovere!

Ciao, ho seguito la tua guida, funziona quasi tutto, in aggiungi/modifca prodotto compare il campo personalizzato. Non riesco solo a far visualizzare il nuovo campo nella scheda prodotto. Ho modificato il file Price.php,
nella cartella wp-content/plugins/woocommerce/templates/single-product, come di seguito riportato:
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}

global $product;
?>
<p class="price"><?php echo $product->get_price_html();
?></p>
<p class="price"><?php echo get_post_meta( $post_id, 'campo_personalizzato' );
?></p>
ma ancora non riesco a visualizzare il campo personalizzato nella scheda prodotto. Dove sbaglio? Grazie mille. Moira

In risposta a moira

Ciao Moira,
il problema dovrebbe essere dovuto al fatto che l’ID del prodotto non viene chiamato in maniera corretta. Alla riga:

anziché $post_id, prova utilizzando $product->get_id() ed il problema dovrebbe risolversi.

Inoltre, il tema del sito è HasOne e sto utilizzando un plugin "Name your Price" affinché l'utente possa inserire un prezzo variabile.
Ho provato a disabilitare il plugin ed inserire un prezzo fisso, ma il campo personalizzato non si vede lo stesso. Grazie. Moira.

Ciao, ho seguito la tua guida e mi sono trovato molto bene.
Ho solo un esigenza per cui non riesco a trovare una soluzione: ho bisogno di aggiungere un paio di text_input ma non all'interno di una tab, quanto piuttosto all'interno di ogni singola variazione prodotto costruita con la gestione degli attributi. Come posso fare?

In risposta a Michele

Ciao Michele, grazie mille!
Gli hooks da utilizzare nel tuo caso sono diversi, ti consiglio di dare un’occhiata al file:
wp-content/plugins/woocommerce/includes/admin/meta-boxes/views/html-variation-admin.php
in cui trovi i vari hooks, tra cui, ad esempio:

  • do_action( ‘woocommerce_variation_header’, $variation );
  • do_action( ‘woocommerce_variation_options’, $loop, $variation_data, $variation );
  • do_action( ‘woocommerce_variation_options_pricing’, $loop, $variation_data, $variation );
  • do_action( ‘woocommerce_variation_options_inventory’, $loop, $variation_data, $variation );

e così via, a cui puoi agganciarti in modo analogo a quello descritto nella guida.

Salve, e se voglio inserire un menu a discesa con i nomi del corriere nel dettaglio ordine nel mio backend? in modo tale che compaia nel DDT il corriere che ho scelto dalla lista.

In risposta a Ciccio

Salve,
l’articolo fa riferimento ai campi da inserire nei prodotti di WooCommerce, nel Suo caso l’articolo da leggere è:

Come personalizzare WooCommerce: il checkout.

Inoltre, WooCommerce non gestisce nativamente i DDT, quindi molto probabilmente sta utilizzando un plugin di terze parti. Se così fosse, Le suggerirei di contattare il team di supporto tecnico del plugin, Le sapranno sicuramente essere di aiuto.

Articolo preziosissimo! Ho seguito tutte le indicazioni solo che ho un piccolo problema. Vorrei inserire il campo personalizzato in additional-information.php.
Ho provato a caricare sia la "versione originale" dell'articolo
<?php echo get_post_meta( $post_id, 'campo_personalizzato' ); ?>
Sia quella suggerita a Moira
<?php echo get_post_meta( $product->get_id(), 'campo_personalizzato' ); ?>
La prima non funziona e mi dà in pagina tutto il codice come testo, la seconda mi restituisce: // Recupera il campo "campo_personalizzato" Array…
dove sbaglio? 🙁

In risposta a Andrea

Salve Andrea, grazie mille!
Se il codice da te inserito viene interpretato come testo, molto probabilmente è inserito in una sezione dove il tag PHP è già aperto. Prova ad inviarmi il file additional-information.php completo via email (supporto@code4life.it) così da poterci dare un’occhiata.

Ciao i tuoi articoli sono davvero interessati e sono un'utile risorsa.Grazie quindi! Vorrei capire se questo post mi può essere utile per risolvere il mio problema: ho creato delle schede prodotto con woocommerce come fosse un sito sito "catalogo". Quindi chi è interessato ad un prodotto specifico farà una richiesta di preventivo al singolo venditore. Ora avrei la necessità di inserire un campo di input sul backend della scheda prodotto dove poter inserire la mail di quello specifico venditore al quale arriverà la richiesta. E' possibile fare questo? Spero di essere stato chiaro nella domanda. Grazie mille!

In risposta a Giovanni

Salve Giovanni,
grazie mille, mi fa piacere che Code4Life sia stato utile!

Puoi utilizzare quanto descritto nella guida per creare un nuovo campo in cui inserire, per ogni prodotto, la mail del venditore.
Bisognerebbe peró comprendere come è strutturato il form di richiesta informazioni e come gestisce l’invio della mail, impostando dinamicamente il valore email salvato nel nuovo campo come destinatario.

Grazie per la risposta. So che non è una cosa subito facile da risolvere, e cerco di spiegare meglio. Mi necessità inserire una form di contatto all'interno di una scheda prodotto woocommerce. La form dovrà puntare al proprietario del prodotto specifico ( e non al proprietario del sito) per la richiesta di preventivo. In pratica 1 prodotto>1 proprietario>1 email. Quindi mi domando se sia possibile con le modifiche che tu proponi sul tuo articolo risolvere il problema. Spero di essere stato chiaro nell'esposizione. Grazie mille!

In risposta a Giovanni

Ciao Giovanni,
si, è possibile. Una volta memorizzata la mail per ogni prodotto (come spiegato nella guida), bisogna creare il form, magari tramite appositi plugins (Gravity, CF7). Dopodiché (la parte forse più complessa) bisogna, studiando la documentazione del plugin che sceglierai di utilizzare, gestire tramite hooks il destinatario della mail del form, prelevando il dato precedentemente memorizzato.

Mi hai dato una notizia che da una parte mi solleva e dall'altra mi preoccupa poichè penso sia, come dici tu, un pò più complesso e per me lo è. Sto usando come plugin Forminator che è formidabile in tanti aspetti e quindi ora dovrò capire come fare 🙁

In risposta a Giovanni

Ciao Giovanni, è complesso semplicemente perché si tratta di riuscire a capire dove il plugin effettua l’invio della mail e quale è l’hook per modificarne il destinatario, non preoccuparti!

Ciao e scusa ancora. Ho due problemi:
1)Ho creato il campo email in una scheda prodotto woocommerce, ma quando aggiorno la pagina questo non viene memorizzato. Come puoi vedere ho solo modificato il "campo personalizzato" con "email". Qui sotto il codice.
// Aggiunge un nuovo campo ai prodotti di WooCommerce
add_action( 'woocommerce_product_options_general_product_data', function() {
woocommerce_wp_text_input( array(
'id'=> '_1',
'name'=> 'email',
'label'=> __( 'Email', 'woocommerce' ),
'description'=> __( 'Descrizione per il tuo campo personalizzato', 'woocommerce' ),
'desc_tip'=> true,
'placeholder'=> __( 'inserisci email struttura', 'woocommerce' )
) );
} );

// Salva il valore del campo personalizzato
add_action( 'woocommerce_process_product_meta', function( $post_id ) {
if ( ! empty( $_POST['_email'] ) ) {
update_post_meta( $post_id, '_email', esc_attr( $_POST['_email'] ) );

2) A me non interessa visualizzare il risultato da qualche parte in una pagina, ma il valore inserito nel campo "email" mi servirà che si colleghi al plugin per l'invio personalizzato di informazioni su quel prodotto specifico. Devo usare quindi un woocommerce_wp_hidden_input o non è necessario?
Grazie per le risposte e scusa se ho invaso questo luogo con le mie domande 🙂

In risposta a Giovanni

Ciao Giovanni, prova a rimuovere l’underscore (“_”) dall’indice del $_POST nella funzione di salvataggio dei dati. Non è necessario utilizzare un campo hidden, l’importante è non visualizzarlo esplicitamente nel frontend del tuo sito, ma solo nella funzione che si occupa di selezionare il destinatario della mail.

Ciao e scusa ancora. Ho provato a seguire le tue indicazioni, ma quando inserisco la mail non viene memorizzata nel campo creato nelle opzioni generali del prodotto…
Forse ho capito male io. Qui sotto la modifica:

add_action( 'woocommerce_process_product_meta', function( $post_1 ) {
if ( ! empty( $POST['email'] ) ) {
update_post_meta( $post_1, 'email', esc_attr( $POST['email'] ) );
} } );

In risposta a Giovanni

Ciao Giovanni,
per gestire i valori della chiamata POST, la giusta sintassi è:

$_POST[‘email’]

e non $POST[‘email’]. Per comprendere meglio dove eventualmente ci possa essere l’errore, prova a far stampare riga dopo riga le variabili, così da capire se contengono i valori che ti aspetti prima che vengano effettivamente immagazzinati.

Articolo davvero ben fatto e chiarissimo anche per chi non è prettamente uno sviluppatore, complimenti!
Ho seguito tutto passo passo e lato back-end sembra funzionare tutto quanto: appare il campo personalizzato nella tab "inventario" e inserendo il dato vedo che viene salvato.
Non riesco però a visualizzarlo sulla pagina del prodotto.

Nel file function.php ho inserito il seguente codice:

add_action( 'woocommerce_product_options_inventory_product_data', function() {
woocommerce_wp_text_input( array(
'id' => '_conf',
'name' => 'confezione',
'label' => __( 'Numero pezzi per confezione:', 'woocommerce' ),
'description' => __( 'Descrizione per il tuo campo personalizzato', 'woocommerce' ),
'desc_tip' => true,
'placeholder' => __( 'Inserisci qui il valore del tuo campo personalizzato', 'woocommerce' )
) );
} );

// Salva il valore del campo personalizzato
add_action( 'woocommerce_process_product_meta', function( $post_id ) {
if ( ! empty( $_POST['confezione'] ) ) {
update_post_meta( $post_id, '_conf', esc_attr( $_POST['confezione'] ) );
}
} );

Nella file meta.php invece ho scritto questo:

<p class="sku">Numero pezzi per confezione: <?php echo get_post_meta( $product->get_id(), 'confezione' ); ?></p>

Sulla pagina, al posto del dato inserito mi appare la scritta "Array" (senza virgolette).
Sapreste aiutarmi a capire dove sbaglio?
Grazie mille 🙂

In risposta a nich

Salve nich, quando salvi il valore del campo con la funzione:
update_post_meta( $post_id, ‘_conf’, esc_attr( $_POST[‘confezione’] ) );
stai assegnando come “nome” identificativo “_conf” (secondo parametro della funzione), ma quando lo richiami:
echo get_post_meta( $product->get_id(), ‘confezione’ );
lo fai utilizzando un altro nome “confezione”.
Inoltre, la funzione get_post_meta() di WordPress, prevede un terzo parametro (opzionale) che occorre a specificare se deve restituire un valore singolo, oppure è previsto che con lo stesso identificativo ci siano più valori. Prova quindi in questo modo:
echo get_post_meta( $product->get_id(), ‘_conf’, true );
Per avere maggiori informazioni sulla funzione get_post_meta(), dai un’occhiata qui:
https://developer.wordpress.org/reference/functions/get_post_meta/

intanto grazie per la rapida risposta.
Ho inserito la riga come indicato da voi ma mi appare un warning:

Warning: Use of undefined constant �_conf� – assumed '�_conf�' (this will throw an Error in a future version of PHP) in /home/mhd-01/www.morettibevande.it/htdocs/wp-content/plugins/woocommerce/templates/single-product/meta.php on line 28

In risposta a nich

Ciao nich, se hai fatto copia-incolla del codice, potrebbe averti inserito gli apici obliqui (backtick). Riscrivi il codice utilizzando i corretti apici.

si….. scusate per il rompimento su una cosa "stupida" come questa 🙂
Grazie mille! ora pare funzionare correttamente.
Complimenti ancora per il servizio che offrite!!! Continuerò sicuramente a seguirvi.
Buon Primo Maggio a tutti!

In risposta a nich

Di nulla, mi fa piacere esserti stato di aiuto! Buona giornata e buon Primo Maggio

Ciao ragazzi, come sempre grazie per le ottime guide che fornite a noi "poveri" designer senza il neurone della programmazione 😀

Faccio una domanda per un upgrade che forse può essere utile a tanti: se volessi mostrare il campo personalizzato non solo su una pagina singola (es. scheda prodotto) ma anche negli archivi delle pagine?

Caso specifico: ho creato un campo personalizzato "prezzo unitario" che viene mostrato sotto al prezzo complessivo nelle schede prodotto.
Se volessi mostrarlo anche nelle pagine di ricerca o negli archivi delle varie categorie?
Dove potrei intervenire??

In risposta a nich

Ciao nich, grazie mille, ci fa piacere esserti stato di aiuto 🙂

Considera che WooCommerce mette a disposizione molteplici hooks per consentire di aggiungere codice personalizzato oppure di modificare il comportamento di alcune funzionalità, potresti iniziare dall’utilizzare qualcuno di questi. Trovo molto interessante questa risorsa per iniziare a familiarizzare:

https://hooks.wpdesk.org/

Ti può guidare nel capire quale di hook approfondire la conoscenza perché idoneo al tuo scopo.
Oltre agli hooks, considera che WooCommerce consente l’override dei propri templates, contenuti nella cartella “templates/” all’interno del plugin stesso. Puoi dare un’occhiata qui:

https://docs.woocommerce.com/document/woocommerce-theme-developer-handbook/

per verificare quale template eventualmente personalizzare per inserire il tuo campo personalizzato (come descritto dal paragrafo (5) Visualizzare il nuovo campo nel frontend della nostra guida). Ad esempio, nel tuo caso, potresti considerare l’override del template:

templates/loop/price.php

Spero che queste informazioni siano di aiuto a risolvere i tuoi dubbi!

ciao a tutti, sono riuscito a "giocare" con gli hook e sono quasi arrivato a dama 🙂
ho trovato solo un piccolo intoppo che però credo sia esterno al discorso prettamente legato agli script…

una volta creato il campo e testata la funzionalità (creando un prodotto da zero direttamente dal backend di woocommerce), ho provato ad inserire il contenuto del nuovo prezzo (che sarebbe il prezzo unitario di alcuni prodotti venduti a blocchi di quantità) nel file csv che mi genera woocommerce per velocizzare l'aggiornamento di tutto il catalogo.

Importandolo di nuovo però non mi viene salvato il valore nel campo creato da me.

Qualcuno ha idea di dove possa sbagliare??

Buona giornata a tutti 🙂

In risposta a nich

Ciao nik, ottimo!
Considera che per aggiungere il campo agli strumenti di import/export di WooCommerce è necessario agganciare le specifiche funzioni, ti suggerisco di dare un’occhiata agli hooks:

woocommerce_product_export_column_names
woocommerce_product_export_product_default_columns
woocommerce_product_export_product_query_args
woocommerce_csv_product_import_mapping_options
woocommerce_product_import_pre_insert_product_object
woocommerce_csv_product_import_mapping_default_columns

Spero che queste informazioni siano di aiuto a risolvere i tuoi dubbi
Saluti 🙂

E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Informativa sulla privacy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Informativa sulla privacy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Informativa sulla privacy)