Resumo da IA
Introdução
Gostaria de armazenar valores de caixas de seleção como matrizes para o seu formulário de envios de publicações num campo meta personalizado criado a partir do plugin Advanced Custom Fields? Com um pequeno trecho de código PHP, pode armazenar esses valores numa matriz para os seus campos personalizados.
Por padrão, quando os campos personalizados são mapeados no addon Post Submission, o WPForms armazena os dados no campo personalizado no mesmo formato que o WPForms armazena os dados em todos os formulários.
Por exemplo, para os campos de formulário Checkbox (e qualquer coisa com vários valores), o WPForms armazena os valores como uma única string, com cada valor em uma nova linha.
Red
Green
Blue
No entanto, com um pequeno snippet de PHP, pode facilmente alterar isto para que seja armazenado como um array.
array( 'Red', 'Green', 'Blue')
Criando os seus campos personalizados
Primeiro, vamos criar um campo personalizado para os nossos posts utilizando o plugin Advanced Custom Fields.
Se precisar de mais informações sobre a configuração de campos personalizados, consulte este artigo.

Criar o formulário
Agora é altura de criar o seu formulário de envio de mensagens e adicionar um campo Checkbox ao formulário.

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

Adicionando o snippet para armazenar valores como matrizes
Para armazenar os valores como uma matriz, basta copiar este snippet para o seu site.
Se precisar de ajuda para adicionar snippets 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 durante a edição da publicação, continuará a ver uma caixa de seleção. Só quando reproduzir os valores é que estes serão apresentados como uma matriz (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 saber onde encontrar o seu ID de formulário, consulte esta documentação útil.
Exibindo os valores
Agora é hora de exibir esses valores no seu modelo de postagem única. 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 ecoar isso no seu modelo.
Para obter mais informações sobre como criar um tema filho, consulte este 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 nos certificarmos de que os valores estão lá e, se estiverem, para os mostrar.
Quando a sua publicação for apresentada, verá que os estados são listados num formato de parágrafo em vez de uma apresentação linha a linha.

E pronto! Você alterou com sucesso a forma como esses valores são armazenados na sua base de dados WordPress. Gostaria de usar imagens em vez de texto para os rótulos dos campos do formulário Checkbox? Dê uma olhada no nosso artigo sobre Como aplicar imagens aos rótulos Checkbox usando CSS.
Relacionadas
Referência do filtro: wpforms_post_submissions_process_meta
FAQ
R: Posso utilizar isto também noutras extensões?
R: Com certeza! Por exemplo, se você pegar o mesmo cenário mencionado neste tutorial, poderá adicionar isso ao complemento de registo de utilizador para que seja automaticamente guardado na página de perfil do utilizador enquanto usa o ACF para adicionar mais informações ao perfil de utilizador do WordPress.
Na versão 2.8.0 e posteriores do complemento User Registration, o filtro para armazenar valores meta personalizados é:
wpforms_user_registration_process_base_custom_meta_value
Nota: Nas versões mais antigas (antes do Registo de Utilizador 2.8.0), este filtro era denominado:
wpforms_user_registration_process_registration_custom_meta_value
Se estiver a manter um site antigo, pode manter ambos os ganchos 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, os valores das caixas de seleção enviadas serão guardados como uma matriz quando o WPForms os mapear para o seu campo meta de publicação personalizado.
Gostaria de saber mais sobre como configurar envios de publicações, incluindo o mapeamento de campos meta personalizados, no nosso guia do complemento Envios de Publicações?