Introducción
¿Te gustaría almacenar los valores de Checkbox como arrays para tu formulario Post Submissions en un meta campo personalizado creado desde el plugin Advanced Custom Fields? Con un pequeño fragmento de PHP, puede almacenar estos valores en una matriz para sus campos personalizados.
Por defecto, cuando los campos personalizados son mapeados en el addon Post Submission, WPForms almacena los datos en el campo personalizado en el mismo formato que WPForms almacena los datos en todos los formularios.
Un ejemplo es para los campos de formulario Checkbox (y cualquier cosa con múltiples valores), WPForms almacenar los valores como una sola cadena, con cada valor en una nueva línea.
Red
Green
Blue
Sin embargo, con un pequeño fragmento de PHP, puede cambiar fácilmente esto para que se almacene como una matriz.
array( 'Red', 'Green', 'Blue')
Creación de campos personalizados
En primer lugar, vamos a crear un campo personalizado para nuestras entradas utilizando el plugin Advanced Custom Fields.
Si necesita más información sobre la configuración de campos personalizados, consulte este artículo.
Recuerde que al configurar sus campos ACF, deben ser iguales. Si crea un campo personalizado para una casilla de verificación, asegúrese de que el campo del formulario también sea una casilla de verificación.
Creación del formulario
Ahora es el momento de crear tu formulario de envío de post y añadir un campo Checkbox al formulario.
Si necesita ayuda para configurar un formulario de envío de mensajes, consulte esta documentación.
Una vez que haya añadido los campos restantes a su formulario, vaya a la pestaña Configuración y haga clic en Envíos de publicaciones para asegurarse de que su campo personalizado se asigna correctamente.
Añadir el fragmento para almacenar valores como matrices
Para almacenar los valores como una matriz, sólo tendrá que copiar este fragmento en su sitio.
Si necesitas ayuda para añadir snippets a tu sitio, consulta este 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 );
Es importante tener en cuenta aquí que en la pantalla de entradas de WPForms y en el campo meta mientras editas el post, seguirás viendo una casilla de verificación. Es sólo cuando se hace eco de los valores que se mostrará como una matriz (en una sola línea) y le mostraremos que en el siguiente paso. Recuerda también actualizar el ID del formulario de 443
para que coincida con su propio ID de formulario. Si necesita ayuda para encontrar su ID de formulario, consulte esta útil documentación.
Visualización de los valores
Ahora es el momento de mostrar esos valores en su plantilla de entrada única. WPForms nunca recomienda hacer cambios en vivo a su tema así que es mejor usar un tema hijo o una función personalizada para hacer eco de esto en su plantilla.
Para más información sobre cómo crear un tema hijo, echa un vistazo a este excelente artículo de nuestros amigos de WPBeginner.
Para el propósito de este tutorial, hemos creado nuestro tema hijo y en single. php hemos añadido esta línea de código para asegurarnos primero de que los valores están ahí y si lo están para mostrarlos.
<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>
Cuando se muestre tu entrada, verás que los estados aparecen en un formato de párrafo en lugar de línea por línea.
Y ya está. Ha cambiado con éxito cómo se almacenan estos valores en su base de datos de WordPress. ¿Le gustaría también utilizar imágenes para sus etiquetas de campo de formulario Checkbox en lugar de texto? Echa un vistazo a nuestro artículo sobre Cómo aplicar imágenes a las etiquetas Checkbox usando CSS.
Relacionado
Filtro de Referencia: wpforms_post_submissions_process_meta
PREGUNTAS FRECUENTES
R: ¿Puedo utilizarlo también en otros addons?
R: ¡Por supuesto! Por ejemplo, si usted toma el mismo escenario como se menciona en este tutorial, usted podría agregar esto al complemento de Registro de Usuario para que se guarde automáticamente en la página de perfil de usuario mientras usa ACF para agregar más información al Perfil de Usuario de 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 );
Observe que el nombre del filtro es ahora wpforms_user_registration_process_registration_custom_meta_value
esto significa que, al crear un formulario de registro con la función Registro de usuarios esta información se almacenará en el perfil del usuario.