Resumo de IA
Introdução
Gostaria de armazenar os valores de Checkbox como arrays para o seu formulário Envio de Posts em um campo personalizado criado a partir do plugin Advanced Custom Fields? Com um pequeno trecho de PHP, você pode armazenar esses valores em um array para seus campos personalizados.
Por padrão, quando os campos personalizados são mapeados no addon Envio de Posts, o WPForms armazena os dados no campo personalizado no mesmo formato em que o WPForms armazena os dados em todos os formulários.
Um exemplo para campos de formulário Checkbox (e qualquer coisa com múltiplos valores), o WPForms armazena os valores como uma única string, com cada valor em uma nova linha.
Vermelho
Verde
Azul
No entanto, com um pequeno trecho de PHP, você pode facilmente mudar isso para que seja armazenado como um array.
array( 'Vermelho', 'Verde', 'Azul')
Criando Seus Campos Personalizados
Primeiro, vamos criar um campo personalizado para nossos posts usando o plugin Advanced Custom Fields.
Se precisar de mais informações sobre como configurar campos personalizados, consulte este artigo.

Criação do Formulário
Agora é hora de criar seu formulário de envio de posts e adicionar um campo Checkbox ao formulário.

Depois de adicionar os campos restantes ao seu formulário, vá para a aba Configurações e clique em Envio de Posts para garantir que seu campo personalizado esteja mapeado corretamente.

Adicionando o Trecho para Armazenar Valores como Arrays
Para armazenar os valores como um array, você só precisará copiar este trecho para o seu site.
Se precisar de ajuda para adicionar trechos ao seu site, consulte 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 );
Observação: É importante notar aqui que na tela de entradas do WPForms e no campo meta ao editar o post, você ainda verá um checkbox. É apenas quando você exibe os valores que ele mostrará como um array (em uma única linha) e mostraremos isso na próxima etapa. Lembre-se também de atualizar o ID do formulário de 443 para corresponder ao seu próprio ID de formulário. Se precisar de ajuda para encontrar o ID do seu formulário, consulte esta documentação útil.
Exibindo os Valores
Agora é hora de exibir esses valores no seu modelo de post único. O WPForms nunca recomenda fazer alterações ao vivo no seu tema, então é melhor usar um tema filho ou uma função personalizada para exibir isso no seu modelo.
Para mais informações sobre como criar um tema filho, dê uma olhada neste excelente artigo de nossos amigos da 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 fins deste tutorial, criamos nosso tema filho e em single.php adicionamos esta linha de código para primeiro garantir que os valores estejam lá e, se estiverem, exibi-los.
Quando seu post for exibido, você verá os estados listados em formato de parágrafo em vez de uma exibição linha por linha.

E é isso! Você alterou com sucesso como esses valores são armazenados no banco de dados do seu WordPress. Você gostaria de usar imagens para os rótulos do seu campo de formulário Checkbox em vez de texto? Dê uma olhada em nosso artigo sobre Como Aplicar Imagens aos Rótulos de Checkbox Usando CSS.
Relacionado
Referência de Filtro: wpforms_post_submissions_process_meta
Perguntas Frequentes
R: Posso usar isso em outros add-ons também?
R: Com certeza! Por exemplo, se você pegar o mesmo cenário mencionado neste tutorial, você poderia adicionar isso ao add-on de Registro de Usuário para que ele seja salvo automaticamente na página de perfil do usuário enquanto usa o ACF para adicionar mais informações ao Perfil de Usuário do WordPress.
Na versão 2.8.0 e mais recentes do add-on de Registro de Usuário, o filtro para armazenar valores de meta personalizados é:
wpforms_user_registration_process_base_custom_meta_value
Observação: Em versões mais antigas (antes do Registro de Usuário 2.8.0), este filtro era chamado:
wpforms_user_registration_process_registration_custom_meta_value
Se você estiver mantendo um site legado, pode manter ambos os hooks para compatibilidade com versões 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 );
É isso! Agora seus valores de checkbox enviados serão salvos como um array quando o WPForms os mapear para o seu campo de meta de post personalizado.
Gostaria de aprender mais sobre como configurar o Post Submissions, incluindo o mapeamento de campos de Meta de Post Personalizados, em nosso guia do add-on Post Submissions.