Riepilogo AI
Introduzione
Desideri memorizzare i valori delle caselle di controllo come array per il modulo di invio dei post in un campo meta personalizzato creato dal plugin Advanced Custom Fields? Con un piccolo snippet PHP, puoi memorizzare questi valori in un array per i tuoi campi personalizzati.
Per impostazione predefinita, quando i campi personalizzati sono mappati nell'addon Post Submission, WPForms memorizza i dati nel campo personalizzato nello stesso formato in cui WPForms memorizza i dati in tutti i moduli.
Ad esempio, per i campi dei moduli Checkbox (e qualsiasi altra cosa con valori multipli), WPForms memorizza i valori come una singola stringa, con ogni valore su una nuova riga.
Red
Green
Blue
Tuttavia, con un piccolo snippet PHP, è possibile modificare facilmente la memorizzazione come array.
array( 'Red', 'Green', 'Blue')
Creazione dei campi personalizzati
Per prima cosa, creeremo un campo personalizzato per i nostri post utilizzando il plugin Advanced Custom Fields.
Per ulteriori informazioni sull'impostazione dei campi personalizzati, consultare questo articolo.

Creazione del modulo
Ora è il momento di creare il modulo di invio del post e di aggiungere un campo Checkbox al modulo.

Una volta aggiunti i campi rimanenti al modulo, andare alla scheda Impostazioni e fare clic su Invii di post per assicurarsi che il campo personalizzato sia mappato correttamente.

Aggiunta dello snippet per memorizzare i valori come array
Per memorizzare i valori come array, è sufficiente copiare questo snippet nel proprio sito.
Se avete bisogno di aiuto per aggiungere gli snippet al vostro sito, consultate 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 che nella schermata delle voci di WPForms e nel campo meta durante la modifica del post, vedrai ancora una casella di controllo. Solo quando riproduci i valori, questi verranno visualizzati come un array (su una singola riga) e te lo mostreremo nel passaggio successivo. Ricordati anche di aggiornare l'ID del modulo da 443 per far corrispondere l'ID del proprio modulo. Se avete bisogno di aiuto per trovare il vostro ID modulo, Consultate questa utile documentazione.
Visualizzazione dei valori
Ora è il momento di visualizzare questi valori sul modello del singolo post. WPForms non consiglia mai di apportare modifiche in tempo reale al vostro tema, quindi è meglio usare un tema figlio o una funzione personalizzata per fare l'eco sul vostro modello.
Per ulteriori informazioni sulla creazione di un tema figlio, date un'occhiata a questo eccellente articolo dei nostri amici di WPBeginner.

<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>
Per lo scopo di questo tutorial, abbiamo creato il nostro tema figlio e in single.php abbiamo aggiunto questa riga di codice per assicurarci che i valori siano presenti e, se lo sono, per visualizzarli.
Quando il post viene visualizzato, gli stati sono elencati in un formato a paragrafi anziché in una visualizzazione riga per riga.

Ecco fatto! Hai modificato con successo il modo in cui questi valori vengono memorizzati nel tuo database WordPress. Vorresti utilizzare anche delle immagini invece del testo per le etichette dei campi del modulo Checkbox? Dai un'occhiata al nostro articolo su Come applicare immagini alle etichette Checkbox utilizzando CSS.
Correlato
Riferimento filtro: wpforms_post_submissions_process_meta
FAQ
R: Posso utilizzarlo anche in altri addon?
R: Certamente! Ad esempio, se prendi lo stesso scenario menzionato in questo tutorial, potresti aggiungere questo all'add-on Registrazione utente in modo che venga automaticamente salvato nella pagina del profilo utente mentre utilizzi ACF per aggiungere ulteriori informazioni al profilo utente WordPress.
Nella versione 2.8.0 e successive dell'add-on Registrazione utente, il filtro per la memorizzazione dei valori meta personalizzati è:
wpforms_user_registration_process_base_custom_meta_value
Nota: nelle versioni precedenti (prima della registrazione utente 2.8.0), questo filtro era denominato:
wpforms_user_registration_process_registration_custom_meta_value
Se stai gestendo un sito legacy, puoi mantenere entrambi gli hook per garantire la retrocompatibilità.
/**
* 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 );
Ecco fatto! Ora i valori delle caselle di controllo inviate verranno salvati come array quando WPForms li mappa al campo meta personalizzato del tuo post.
Desideri saperne di più sulla configurazione degli invii di post, inclusa la mappatura dei campi meta personalizzati dei post, nella nostra guida all'add-on Post Submissions.