Resumen de IA
Introducción
¿Te gustaría almacenar los valores de Casilla de verificación como matrices para tu formulario de Envíos de publicaciones en un campo meta personalizado creado desde el plugin Advanced Custom Fields? Con un pequeño fragmento de PHP, puedes almacenar estos valores en una matriz para tus campos personalizados.
Por defecto, cuando los campos personalizados se mapean en el complemento Post Submission, WPForms almacena los datos en el campo personalizado en el mismo formato en que WPForms almacena los datos en todos los formularios.
Un ejemplo es para los campos de formulario de Casilla de verificación (y cualquier cosa con múltiples valores), WPForms almacena los valores como una sola cadena, con cada valor en una nueva línea.
Rojo
Verde
Azul
Sin embargo, con un pequeño fragmento de PHP, puedes cambiar fácilmente esto para que se almacene como una matriz.
array( 'Rojo', 'Verde', 'Azul')
Creación de tus campos personalizados
Primero, vamos a crear un campo personalizado para nuestras publicaciones usando el plugin Advanced Custom Fields.
Si necesitas más información sobre la configuración de campos personalizados, por favor consulta este artículo.

Creación del formulario
Ahora es el momento de crear tu formulario de envío de publicaciones y añadir un campo de Casilla de verificación al formulario.

Una vez que hayas añadido los campos restantes a tu formulario, ve a la pestaña Configuración y haz clic en Envíos de publicaciones para asegurarte de que tu campo personalizado esté mapeado correctamente.

Añadir el fragmento para almacenar valores como matrices
Para almacenar los valores como una matriz, solo necesitarás copiar este fragmento en tu sitio.
Si necesitas ayuda para añadir fragmentos a tu sitio, por favor 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 );
Nota: Es importante tener en cuenta aquí que en la pantalla de entradas de WPForms y en el campo meta mientras editas la publicación, todavía verás una casilla de verificación. Solo cuando muestres los valores se mostrarán como una matriz (en una sola línea) y te mostraremos eso en el siguiente paso. También recuerda actualizar el ID del formulario de 443 para que coincida con tu propio ID de formulario. Si necesitas ayuda para encontrar tu ID de formulario, consulta esta útil documentación.
Mostrar los valores
Ahora es el momento de mostrar esos valores en la plantilla de tu publicación individual. WPForms nunca recomienda hacer cambios en vivo en tu tema, por lo que es mejor usar un tema hijo o una función personalizada para mostrar esto en tu plantilla.
Para más información sobre la creación de un tema hijo, echa un vistazo a este excelente artículo de nuestros amigos de 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>
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 existen y, si es así, mostrarlos.
Cuando se muestre tu publicación, verás que los estados se enumeran en formato de párrafo en lugar de una visualización línea por línea.

¡Y eso es todo! Ha cambiado correctamente cómo se almacenan estos valores en su base de datos de WordPress. ¿Le gustaría también usar imágenes para las etiquetas de los campos de formulario de Casilla de verificación en lugar de texto? Eche un vistazo a nuestro artículo sobre Cómo aplicar imágenes a las etiquetas de casillas de verificación usando CSS.
Relacionado
Referencia del filtro: wpforms_post_submissions_process_meta
Preguntas frecuentes
R: ¿Puedo usar esto también en otros complementos?
R: ¡Absolutamente! Por ejemplo, si toma el mismo escenario que se menciona en este tutorial, podría agregar esto al complemento de Registro de usuarios para que se guarde automáticamente en la página del perfil de usuario mientras usa ACF para agregar información adicional al Perfil de usuario de WordPress.
En la versión 2.8.0 y posteriores del complemento de Registro de usuarios, el filtro para almacenar valores de metadatos personalizados es:
wpforms_user_registration_process_base_custom_meta_value
Nota: En versiones anteriores (anteriores a Registro de usuarios 2.8.0), este filtro se llamaba:
wpforms_user_registration_process_registration_custom_meta_value
Si está manteniendo un sitio heredado, puede mantener ambos ganchos para compatibilidad con versiones anteriores.
/**
* 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 );
¡Eso es todo! Ahora sus valores de casilla de verificación enviados se guardarán como una matriz cuando WPForms los asigne a su campo de metadatos de publicación personalizado.
¿Le gustaría aprender más sobre la configuración de Envíos de publicaciones, incluida la asignación de campos de metadatos de publicaciones personalizados, en nuestra guía del complemento de Envíos de publicaciones.