Introdução
Gostaria de armazenar os valores das caixas de verificação como arrays para o seu formulário de submissão de posts num meta-campo personalizado criado a partir do plugin Advanced Custom Fields? Com um pequeno snippet de PHP, pode armazenar estes 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')
Criar 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.
Não se esqueça de que, ao configurar os seus campos ACF, deve ser igual a igual. Se criar um campo personalizado para uma caixa de verificação, certifique-se de que o campo do formulário também é uma caixa de verificação.
Criar o formulário
Agora é altura de criar o seu formulário de envio de mensagens e adicionar um campo Checkbox ao formulário.
Se precisar de ajuda para configurar um formulário de envio de mensagens, consulte esta documentação.
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.
Adicionar o snippet para armazenar valores como arrays
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 );
É importante notar aqui que no ecrã de entradas do WPForms e no campo meta enquanto edita o post, continuará a ver uma caixa de verificação. É apenas quando você ecoa os valores que ele será exibido 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 seu ID de formulário, consulte esta documentação útil.
Visualização dos 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.
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.
<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 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! Alterou com êxito a forma como estes valores são armazenados na sua base de dados do WordPress. Gostaria de utilizar também imagens para as etiquetas do campo de formulário Caixa de verificação em vez de texto? Dê uma vista de olhos ao nosso artigo sobre Como aplicar imagens a etiquetas de caixas de verificação utilizando CSS.
Relacionadas
Referência do filtro: wpforms_post_submissions_process_meta
FAQ
R: Posso utilizar isto também noutras extensões?
R: Sem dúvida! Por exemplo, se utilizar o mesmo cenário mencionado neste tutorial, pode adicionar isto ao addon Registo de Utilizador para que seja automaticamente guardado na página de perfil do utilizador enquanto utiliza o ACF para adicionar mais informações ao Perfil de Utilizador 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 );
Repare como o nome do filtro é agora wpforms_user_registration_process_registration_custom_meta_value
isto significa que, quando se cria um formulário de registo com o Registo do utilizador addon, esta informação será guardada no perfil do utilizador.