Introdução
Gostaria de armazenar valores de caixas de seleção como matrizes para o formulário de envio de posts em um metacampo personalizado criado pelo plug-in Advanced Custom Fields? Com um pequeno trecho de PHP, você pode armazenar esses valores em uma matriz para seus campos personalizados.
Por padrão, quando os campos personalizados são mapeados no complemento Post Submission, 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 são os campos de formulário Checkbox (e qualquer coisa com vários valores), os WPForms armazenam os valores como uma única cadeia de caracteres, com cada valor em uma nova linha.
Red
Green
Blue
No entanto, com um pequeno trecho de PHP, você pode alterar isso facilmente para que seja armazenado como uma matriz.
array( 'Red', 'Green', 'Blue')
Criando seus campos personalizados
Primeiro, vamos criar um campo personalizado para nossas postagens usando o plug-in Advanced Custom Fields.
Se você precisar de mais informações sobre a configuração de campos personalizados, consulte este artigo.
Lembre-se de que, ao configurar seus campos ACF, eles devem ser iguais. Se você criar um campo personalizado para uma caixa de seleção, certifique-se de que o campo do formulário também seja uma caixa de seleção.
Criando o formulário
Agora é hora de criar seu formulário de envio de post e adicionar um campo Checkbox ao formulário.
Se precisar de ajuda para configurar um formulário de envio de postagem, consulte esta documentação.
Depois de adicionar os campos restantes ao formulário, vá para a guia Settings (Configurações ) e clique em Post Submissions (Envios de publicações) para verificar se o campo personalizado está mapeado corretamente.
Adição do snippet para armazenar valores como matrizes
Para armazenar os valores como uma matriz, basta copiar este snippet em 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 );
É importante observar aqui que, na tela de entradas do WPForms e no campo meta ao editar a postagem, você ainda verá uma caixa de seleção. É somente quando você ecoa os valores que eles serão exibidos como uma matriz (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 saber onde encontrar o ID do formulário, Consulte esta documentação útil.
Exibição dos valores
Agora é hora de exibir esses valores em seu modelo de postagem única. O WPForms nunca recomenda fazer alterações ao vivo em seu tema, portanto, é melhor usar um tema filho ou uma função personalizada para fazer isso em seu modelo.
Para obter mais informações sobre como criar um tema filho, dê uma olhada neste excelente artigo de nossos amigos da WPBeginner.
Para os fins deste tutorial, criamos nosso tema filho e, em single.php, adicionamos esta linha de código para primeiro verificar se os valores estão lá e, se estiverem, exibi-los.
<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>
Quando sua postagem for exibida, você verá que os estados estão listados em um formato de parágrafo em vez de uma exibição linha por linha.
E é isso! Você alterou com êxito a forma como esses valores são armazenados no banco de dados do WordPress. Gostaria de usar também imagens para os rótulos do campo de formulário Checkbox em vez de texto? Dê uma olhada em nosso artigo sobre Como aplicar imagens a rótulos de caixa de seleção usando CSS.
Relacionado
Referência do filtro: wpforms_post_submissions_process_meta
PERGUNTAS FREQUENTES
R: Posso usar isso em outros complementos também?
R: Com certeza! Por exemplo, se você usar o mesmo cenário mencionado neste tutorial, poderá adicionar isso ao complemento 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 do usuário do 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 como o nome do filtro agora é wpforms_user_registration_process_registration_custom_meta_value
Isso significa que, quando você cria um formulário de registro com o Registro de usuário addon, essas informações serão armazenadas no perfil do usuário.