Atenção!

Este artigo contém código PHP e destina-se a programadores. Oferecemos este código como cortesia, mas não prestamos suporte para personalizações de código ou desenvolvimento de terceiros.

Para orientação adicional, consulte o tutorial da WPBeginner sobre como adicionar código personalizado.

Ignorar

Como Armazenar Valores de Checkbox como Arrays Com Post Submissions

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.

Lembre-se, ao configurar os seus campos ACF, deve ser correspondência exata. Se criar um campo personalizado para uma caixa de seleção, certifique-se de que o campo do formulário também é uma caixa de seleção.

crie os seus campos personalizados nos seus posts

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.

adicione um campo de checkbox ao seu formulário

Se precisar de alguma assistência na configuração de um formulário de submissão de posts, consulte esta documentação.

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.

certifique-se de mapear todos e quaisquer campos personalizados no separador Submissões de Posts do seu construtor de formulários

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.

exiba os valores como arrays no seu modelo de post único
<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.

agora os seus valores de checkbox serão mostrados numa única 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.

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.