Resumo de IA
Introdução
Gostaria de armazenar os valores de Caixa de seleção como arrays para o seu formulário de Submissões de Posts num campo meta personalizado criado a partir do plugin Advanced Custom Fields? Com um pequeno trecho de PHP, pode armazenar estes valores num array para os seus campos personalizados.
Por defeito, quando os campos personalizados são mapeados no addon de Submissão 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 de Caixa de seleção (e qualquer coisa com múltiplos valores), o WPForms armazena os valores como uma única string, com cada valor numa nova linha.
Vermelho
Verde
Azul
No entanto, com um pequeno trecho de PHP, pode facilmente alterar isto para que seja armazenado como um array.
array( 'Vermelho', 'Verde', 'Azul')
Criar os Seus Campos Personalizados
Primeiro, vamos criar um campo personalizado para os nossos posts usando o plugin Advanced Custom Fields.
Se precisar de mais informações sobre a configuração de campos personalizados, consulte este artigo.

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

Depois de adicionar os campos restantes ao seu formulário, vá ao separador Definições e clique em Submissões de Posts para garantir que o seu campo personalizado está mapeado corretamente.

Adicionar o Trecho para Armazenar Valores como Arrays
Para armazenar os valores como um array, basta 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 );
Nota: É importante notar aqui que no ecrã de entradas do WPForms e no campo meta ao editar o post, ainda verá uma caixa de seleção. É apenas quando exibir os valores que eles aparecerão como um array (numa única linha) e mostraremos isso no próximo passo. 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 seu ID de formulário, consulte esta documentação útil.
Exibir 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, por isso é melhor usar um tema filho ou uma função personalizada para exibir isso no seu modelo.
Para mais informações sobre a criação de um tema filho, dê uma olhada neste excelente artigo dos 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 efeitos deste tutorial, criámos o nosso tema filho e em single.php adicionámos esta linha de código para primeiro garantir que os valores existem e, se existirem, exibi-los.
Quando o seu post for exibido, verá os estados listados num formato de parágrafo em vez de uma exibição linha a linha.

E é tudo! Alterou com sucesso a forma como estes valores são armazenados na sua base de dados WordPress. Gostaria também de usar imagens para os rótulos dos campos do seu formulário Checkbox em vez de texto? Dê uma vista de olhos ao nosso artigo sobre Como Aplicar Imagens a Rótulos de Checkbox Usando CSS.
Relacionado
Referência do Filtro: wpforms_post_submissions_process_meta
FAQ
R: Posso usar isto noutros add-ons também?
R: Absolutamente! Por exemplo, se seguir o mesmo cenário mencionado neste tutorial, poderia adicionar isto ao add-on de Registo de Utilizador para que seja automaticamente guardado na página de perfil do utilizador, ao mesmo tempo que utiliza o ACF para adicionar mais informações ao Perfil de Utilizador do WordPress.
Na versão 2.8.0 e mais recentes do add-on de Registo de Utilizador, o filtro para armazenar valores de meta personalizados é:
wpforms_user_registration_process_base_custom_meta_value
Nota: Em versões mais antigas (antes do Registo de Utilizador 2.8.0), este filtro chamava-se:
wpforms_user_registration_process_registration_custom_meta_value
Se estiver a manter um site legado, pode manter ambos os hooks para compatibilidade retroativa.
/**
* 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 );
É tudo! Agora os seus valores de checkbox submetidos serão guardados como um array quando o WPForms os mapear para o seu campo de meta de post personalizado.
Gostaria de saber mais sobre a configuração de Submissões de Posts, incluindo o mapeamento de campos de Meta de Posts Personalizados, no nosso guia do add-on de Submissões de Posts.