Introduzione
Volete memorizzare i valori delle caselle di controllo come array per il vostro modulo di invio dei post su un meta-campo personalizzato creato dal plugin Advanced Custom Fields? Con un piccolo snippet PHP, potete memorizzare questi valori in un array per i vostri 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')
Creare i 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.
Quando si impostano i campi ACF, è necessario che siano simili. Se si crea un campo personalizzato per una casella di controllo, assicurarsi che anche il campo del modulo sia una casella di controllo.
Creazione del modulo
Ora è il momento di creare il modulo di invio del post e di aggiungere un campo Checkbox al modulo.
Se avete bisogno di assistenza per impostare un modulo di invio di un post, consultate questa documentazione.
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 );
È importante notare che nella schermata di inserimento di WPForms e nel campo meta durante la modifica del post, si vedrà ancora una casella di controllo. Solo quando si fa l'eco dei valori, questi verranno visualizzati come array (su una singola riga) e lo mostreremo nel prossimo passo. Ricordarsi anche di aggiornare l'ID del form 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.
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.
<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>
Quando il post viene visualizzato, gli stati sono elencati in un formato a paragrafi anziché in una visualizzazione riga per riga.
Ed ecco fatto! Avete modificato con successo la modalità di memorizzazione dei valori nel database di WordPress. Volete utilizzare anche delle immagini per le etichette dei campi del modulo Checkbox al posto del testo? Date un'occhiata al nostro articolo su Come applicare immagini alle etichette delle caselle di controllo utilizzando i CSS.
Correlato
Riferimento filtro: wpforms_post_submissions_process_meta
FAQ
R: Posso utilizzarlo anche in altri addon?
R: Assolutamente sì! Ad esempio, se si prende lo stesso scenario menzionato in questo tutorial, si può aggiungere questo addon all'addon Registrazione utente, in modo che venga salvato automaticamente nella pagina del profilo utente, mentre si utilizza ACF per aggiungere ulteriori informazioni al profilo utente di WordPress.
/** * 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, $fields, $form_data ) { // 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_user_registration_process_registration_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );
Si noti come il nome del filtro sia ora wpforms_user_registration_process_registration_custom_meta_value
questo significa che quando si crea un modulo di registrazione con l'opzione Registrazione utente queste informazioni saranno memorizzate nel profilo dell'utente.