Attenzione!

Questo articolo contiene codice PHP ed è destinato agli sviluppatori. Offriamo questo codice come cortesia, ma non forniamo supporto per personalizzazioni del codice o sviluppo di terze parti.

Per ulteriore assistenza, consulta il tutorial di WPBeginner su come aggiungere codice personalizzato.

Chiudi

Come archiviare i valori delle caselle di controllo come array con le sottomissioni di post

Introduzione

Vuoi archiviare i valori delle caselle di controllo come array per il tuo modulo Sottomissioni di post su un campo personalizzato creato dal plugin Advanced Custom Fields? Con un piccolo snippet PHP, puoi archiviare questi valori in un array per i tuoi campi personalizzati.

Per impostazione predefinita, quando i campi personalizzati vengono mappati nell'addon Sottomissioni di post, WPForms archivia i dati nel campo personalizzato nello stesso formato in cui WPForms archivia i dati in tutti i moduli.

Un esempio è per i campi del modulo Casella di controllo (e qualsiasi cosa con valori multipli), WPForms archivia i valori come una singola stringa, con ogni valore su una nuova riga.

Rosso
Verde
Blu

Tuttavia, con un piccolo snippet PHP, puoi facilmente cambiarlo per farlo archiviare come array.

array( 'Rosso', 'Verde', 'Blu')

Creazione dei tuoi campi personalizzati

Innanzitutto, creeremo un campo personalizzato per i nostri post utilizzando il plugin Advanced Custom Fields.

Se hai bisogno di maggiori informazioni sull'impostazione dei campi personalizzati, consulta questo articolo.

Ricorda, quando imposti i tuoi campi ACF, dovrebbero essere simili. Se crei un campo personalizzato per una casella di controllo, assicurati che anche il campo del modulo sia una casella di controllo.

crea i tuoi campi personalizzati nel tuo post

Creazione del modulo

Ora è il momento di creare il tuo modulo di sottomissione post e aggiungere un campo Casella di controllo al modulo.

aggiungi un campo checkbox al tuo modulo

Se hai bisogno di assistenza nella configurazione di un modulo di sottomissione post, consulta questa documentazione.

Una volta aggiunti i restanti campi al tuo modulo, vai alla scheda Impostazioni e fai clic su Sottomissioni di post per assicurarti che il tuo campo personalizzato sia mappato correttamente.

assicurati di mappare tutti i campi personalizzati nella scheda Invio Post del tuo generatore di moduli

Aggiunta dello snippet per archiviare i valori come array

Per archiviare i valori come array, dovrai semplicemente copiare questo snippet sul tuo sito.

Se hai bisogno di aiuto per aggiungere snippet al tuo sito, consulta questo tutorial.

/**
 * Turn checkbox values into an array.
 *
 * @link https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/
 */
  
function wpf_dev_post_submission_process_meta( $field_value, $meta_key, $field_id, $fields, $form_data ) {
 
    // Only run on my form with ID = 443
    if ( absint( $form_data[ 'id' ] ) !== 443 ) {
            return;
    } 
      
    // The $meta_key name is the same name that shows in the Field Name on Advanced Custom Fields
    if ( $meta_key === 'have_visited' ) {
 
            $field_value = explode( "\n", $field_value );
 
        }
  
    return $field_value;
}
add_filter( 'wpforms_post_submissions_process_meta', 'wpf_dev_post_submission_process_meta', 10, 5 );

Nota: È importante notare qui che nella schermata delle voci di WPForms e nel campo meta durante la modifica del post, vedrai ancora una casella di controllo. Solo quando visualizzi i valori, questi verranno mostrati come array (su una singola riga) e te lo mostreremo nel prossimo passaggio. Ricorda anche di aggiornare l'ID del modulo da 443 per corrispondere al tuo ID modulo. Se hai bisogno di aiuto su dove trovare il tuo ID modulo, consulta questa utile documentazione.

Visualizzazione dei valori

Ora è il momento di visualizzare quei valori sul tuo modello di post singolo. WPForms sconsiglia vivamente di apportare modifiche dirette al tuo tema, quindi è meglio usare un tema figlio o una funzione personalizzata per visualizzarli nel tuo modello.

Per maggiori informazioni sulla creazione di un tema figlio, dai un'occhiata a questo eccellente articolo dei nostri amici di WPBeginner.

visualizza i valori come array sul tuo modello di post singolo
<div class="states_wrapper">
    <?php if( get_field('have_visited') ): ?> 
        <p>I've already visited these states in the last 5 years: <?php the_field('have_visited'); ?></p> 
    <?php endif; ?>
</div>

Ai fini di questo tutorial, abbiamo creato il nostro tema figlio e su single.php abbiamo aggiunto questa riga di codice per assicurarci prima che i valori siano presenti e, in caso affermativo, per visualizzarli.

Quando il tuo post verrà visualizzato, vedrai gli stati elencati in formato paragrafo anziché in un elenco riga per riga.

ora i tuoi valori di checkbox verranno mostrati in una singola riga

E questo è tutto! Hai modificato con successo il modo in cui questi valori vengono archiviati nel tuo database WordPress. Desideri utilizzare anche immagini per le etichette dei campi del modulo Checkbox invece del testo? Dai un'occhiata al nostro articolo su Come applicare immagini alle etichette delle caselle di controllo utilizzando CSS.

Riferimento filtro: wpforms_post_submissions_process_meta

FAQ

R: Posso usarlo anche in altri componenti aggiuntivi?

R: Assolutamente! Ad esempio, se prendi lo stesso scenario menzionato in questo tutorial, potresti aggiungerlo al componente aggiuntivo Registrazione utente in modo che venga automaticamente salvato nella pagina del profilo utente mentre utilizzi ACF per aggiungere ulteriori informazioni al Profilo utente di WordPress.

Nella versione 2.8.0 e successive del componente aggiuntivo Registrazione utente, il filtro per l'archiviazione di valori meta personalizzati è:

wpforms_user_registration_process_base_custom_meta_value

Nota: Nelle versioni precedenti (prima di Registrazione utente 2.8.0), questo filtro si chiamava:

wpforms_user_registration_process_registration_custom_meta_value

Se stai mantenendo un sito legacy, puoi mantenere entrambi gli hook per la compatibilità con le versioni precedenti.

/**
 * Turn checkbox values into an array with the User Registration addon.
 *
 * @link https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/
 */
function wpf_dev_user_submission_process_meta( $field_value, $meta_key = '', $field_id = 0, $field = array(), $form_data = array() ) {

	// The $meta_key name is the same name that shows in the Field Name on Advanced Custom Fields.
	if ( $meta_key === 'have_visited' ) {
		$field_value = explode( "\n", $field_value );
	}

	return $field_value;
}

// User Registration addon 2.8.0+.
add_filter( 'wpforms_user_registration_process_base_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );

// Backward compatibility for older versions (before 2.8.0).
add_filter( 'wpforms_user_registration_process_registration_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );

Fatto! Ora i tuoi valori di checkbox inviati verranno salvati come array quando WPForms li mapperà al tuo campo meta del post personalizzato.

Desideri saperne di più sulla configurazione di Invio Post, inclusa la mappatura dei campi Meta Post personalizzati, nella nostra guida al componente aggiuntivo Invio Post.