Resumo de IA
Gostaria de personalizar as opções de Escolhas Dinâmicas para os seus campos de Caixa de Seleção, Escolha Múltipla e Menu Suspenso? Se estiver a usar Escolhas Dinâmicas mas quiser excluir publicações, páginas ou categorias específicas, então este é o tutorial para si!
Os campos de Escolhas Múltiplas, Caixas de Seleção e Menu Suspenso podem ser configurados para exibir dinamicamente títulos de publicações ou páginas como Escolhas Dinâmicas.
Por defeito, quando Escolhas Dinâmicas está ativado, todos os itens publicados desse tipo de publicação ou taxonomia específica serão exibidos.
Por exemplo, quando Escolhas Dinâmicas está definido como Tipo de Publicação e a Fonte de Tipo de Publicação Dinâmica está definida como Publicações, todas as publicações publicadas serão exibidas como escolhas de campo.

Para o nosso tutorial, exibiremos um menu suspenso de títulos de publicações gerados dinamicamente a partir do nosso site.
Criação do Formulário
Para começar, vamos criar um formulário que capture o nome, o e-mail, a capacidade do visitante de selecionar qual publicação gostou mais e, em seguida, uma secção de comentários também.
Por esta razão, adicionaremos campos de formulário de Nome, E-mail, Menu Suspenso e Texto de Parágrafo ao nosso formulário.
Depois de adicionar o campo Menu Suspenso, clique em Opções Avançadas e, no menu suspenso Escolhas Dinâmicas, clique em Tipo de Publicação. Isto apresentará outro menu suspenso para Fonte de Tipo de Publicação Dinâmica. Quando vir este segundo menu suspenso, selecione Publicações no menu suspenso e clique em Guardar no formulário.

Adicionar o Snippet para Incluir Publicações de uma Única Categoria
Pode até personalizar ainda mais estas opções utilizando snippets de código. Pode incluir apenas publicações de uma categoria específica ou até excluir publicações de uma categoria específica.
Por exemplo, no nosso tutorial, queremos mostrar apenas publicações de uma categoria específica, pelo que o nosso snippet de código será adicionado para popular o nosso Menu Suspenso apenas com publicações da categoria 11.
Para obter ajuda na adição de snippets de código ao seu site, consulte este tutorial.
/**
* Limit posts or pages displayed by category.
*
* @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
*/
function wpf_dynamic_choices_categories( $args, $field, $form_id ) {
// For field #10 in form #851, only show entries in category #37
if ( '851' == $form_id && '10' == $field[ 'id' ] ) {
$args[ 'category' ] = '22';
}
return $args;
}
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dynamic_choices_categories', 10, 3 );
Lembre-se de alterar o ID do seu formulário e campo nos seus snippets de código para corresponder ao número do ID do seu formulário e campo. Se precisar de ajuda para encontrar os números dos IDs dos seus formulários e campos, por favor reveja este tutorial.
Limitar Múltiplos Formulários para Múltiplos IDs de Categoria
Sabia que também pode ter este snippet de código para vários formulários e campos?
O código abaixo limita as opções dinâmicas em dois formulários diferentes:
- ID de Campo
1do formulário ID363para exibir apenas publicações com o ID de categoria11 - ID de Campo
20do formulário ID225para exibir apenas publicações da categoria ID5
/**
* Limit posts or pages displayed by category.
*
* @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
*/
function wpf_dynamic_choices_categories( $args, $field, $form_id ) {
// For field #1 in form #363, only show entries in category #11
if ( '363' == $form_id && '1' == $field[ 'id' ] ) {
$args[ 'category' ] = '11';
// For field #20 in form #225, only show entries in category #5
} elseif ( '225' == $form_id && '20' == $field['id'] ) {
$args[ 'category' ] = '5';
}
return $args;
}
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dynamic_choices_categories', 10, 3 );
Limitar por Taxonomia
Uma taxonomia é um termo usado no WordPress para definir coisas como Categorias e Etiquetas.
Se as Opções Dinâmicas estiverem definidas como Taxonomia e a Origem da Taxonomia Dinâmica estiver definida como Categorias, todas as categorias serão usadas para as opções do campo.

No entanto, pode excluir categorias específicas usando o trecho de código abaixo.
/**
* Exclude categories from dynamic choices.
*
* @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
*/
function wpf_dev_dynamic_choices_exclude( $args, $field, $form_id ) {
if ( is_array( $form_id ) ) {
$form_id = $form_id[ 'id' ];
}
// Only on form #212 and field #16
if ( $form_id == 212 && $field[ 'id' ] == 16 ) {
// Category IDs to exclude
$args[ 'exclude' ] = '4,5,6,11';
}
return $args;
}
add_filter( 'wpforms_dynamic_choice_taxonomy_args', 'wpf_dev_dynamic_choices_exclude', 10, 3 );
Este trecho de código excluirá as categorias com os IDs 4, 5, 6 e 11 das opções de escolha dinâmica. Se substituir exclude por include no trecho de código acima, apenas mostrará as categorias com os IDs que adicionou.

Exibir Apenas Publicações Futuras
/*
* Only display future posts in the dynamic choices
*
* @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
*/
function wpf_dev_only_future_posts( $args, $field, $form_id ) {
// Only run this snippet on form ID 2575 & only on field ID 19
if ( '2575' == $form_id && '19' == $field[ 'id' ] ) {
// If the Dynamic Choices is set to Post Type
// Look for and only display the posts that have been scheduled with a future date
$args[ 'post_status' ] = [ 'publish', 'future' ];
}
return $args;
}
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dev_only_future_posts', 10, 3 );
Exibir Apenas Publicações do Utilizador Atualmente Ligado
/*
* Set the number of days to delete partial entries when using the Save and Resume addon
*
* @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
*/
function wpf_dev_only_loggedin_user_posts( $args, $field, $form_id ) {
// Only run this snippet on form ID 2519 & only on field ID 3
if ( '2519' == $form_id && '3' == $field[ 'id' ] ) {
// If the Dynamic Choices is set to Post Type
// Look for and only display the posts that have been scheduled with a future date
$args[ 'author' ] = get_current_user_id();
}
return $args;
}
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dev_only_loggedin_user_posts', 10, 3 );
Mostrar Publicações de um ID de Autor Específico
/**
* Only show posts from a particular author ID
*
* @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
*/
function wpf_dynamic_choices_author( $args, $field, $form_id ) {
// Only run on form ID 526
if ( '526' == $form_id ) {
// The author ID is equal to 9
$args[ 'author' ] = '9';
}
return $args;
}
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dynamic_choices_author', 10, 3 );
Exibir Apenas Categorias Filhas
/**
* Display only child categories
*
* @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
*/
function wpf_dev_dynamic_choices_include( $args, $field, $form_id ) {
if ( is_array( $form_id ) ) {
$form_id = $form_id[ 'id' ];
}
// Only on form #122 and field #11
if ( $form_id == 122 && $field[ 'id' ] == 11 ) {
// Category IDs to include - 87 is parent; 88 and 89 are child categories of this parent
$args[ 'include' ] = '87,88,89';
}
return $args;
}
add_filter( 'wpforms_dynamic_choice_taxonomy_args', 'wpf_dev_dynamic_choices_include', 10, 3 );
FAQs
P: Como posso personalizar isto para uma categoria do Woocommerce?
R: Para taxonomias do Woocommerce, no separador Avançadas do seu campo Caixa de seleção, Menu suspenso ou Escolha múltipla, defina as Opções Dinâmicas como Produto, e para a Origem da Taxonomia Dinâmica, selecione Categorias de produtos.
Depois, se quisesse incluir apenas categorias específicas, encontraria o ID da mesma forma que fez acima. No painel de administração do WordPress, clique em Categorias, encontrado em Produtos no menu de administração do WordPress à esquerda. Clique em cada Categoria de Produto cujo ID pretende. O URL será algo como isto:?taxonomy=product_cat&tag_ID=90&post_type=product&wp_http_referer=%2Fwp-admin%2Fedit-tags.php%3Ftaxonomy%3Dproduct_cat%26post_type%3Dproduct
Para este exemplo, o número do ID seria 90
Portanto, o seu trecho de código seria o seguinte.
/**
* Include certain Woocommerce categories from dynamic choices.
*
* @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
*/
function wpf_dev_dynamic_choices_exclude( $args, $field, $form_id ) {
if ( is_array( $form_id ) ) {
$form_id = $form_id[ 'id' ];
}
// Only on form #2620 and field #11
if ( $form_id == 2620 && $field[ 'id' ] == 11 ) {
// Product Category IDs to include
$args[ 'include' ] = '90,95,98';
}
return $args;
}
add_filter( 'wpforms_dynamic_choice_taxonomy_args', 'wpf_dev_dynamic_choices_exclude', 10, 3 );
P: Como posso mostrar apenas certos produtos de uma categoria do Woocommerce?
R: Claro. Configuraria as suas Opções Dinâmicas para Produto e, para a Origem da Taxonomia Dinâmica, selecione Categorias de produtos.
E em vez de usar o ID da categoria do produto, usaria o nome.
/**
* Include products from a specific category from dynamic choices.
*
* @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
*/
function wpf_dev_dynamic_choices_exclude( $args, $field, $form_id ) {
if ( is_array( $form_id ) ) {
$form_id = $form_id[ 'id' ];
}
// Only on form #2620 and field #11
if ( $form_id == 2620 && $field[ 'id' ] == 11 ) {
// Category IDs to exclude
$args[ 'product_cat' ] = 'Decor';
}
return $args;
}
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dev_dynamic_choices_exclude', 10, 3 );
Decoração é o nome da nossa Categoria de Produto. Lembre-se de alterar isto para corresponder às suas próprias necessidades.
P: Como posso mostrar publicações de uma taxonomia personalizada num campo de menu suspenso do WPForms?
R: Para exibir publicações de uma taxonomia personalizada num campo de menu suspenso do WPForms, precisa de modificar os argumentos de escolha dinâmica. Atualmente, os exemplos fornecidos na nossa documentação cobrem categorias. Aqui está um exemplo que mostra como personalizar o código para obter publicações de uma taxonomia específica.
/**
* Customize WPForms dynamic choices to show posts from a specific taxonomy.
*
* @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
*/
function wpf_custom_dynamic_choices( $args, $field, $form_id ) {
// For field #4 in form #25107012, only show entries in taxonomy term ID 8
if ( '25107012' == $form_id && '4' == $field['id'] ) {
$args[ 'tax_query' ] = array(
array(
'taxonomy' => 'samples', // Replace with your custom taxonomy
'field' => 'term_id',
'terms' => array( 8 ), // Replace with your term ID
),
);
}
return $args;
}
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_custom_dynamic_choices', 10, 3 );
O array tax_query é usado para especificar a taxonomia personalizada (amostras neste exemplo) e o ID do termo (8 neste exemplo). Deve substituir 'samples' e 8 pela sua própria taxonomia e ID de termo, conforme necessário. Para mais informações sobre consultas de taxonomia, consulte a documentação do WordPress.
E é tudo! Aprendeu agora as várias formas de personalizar as escolhas dinâmicas no WPForms.
Gostaria de saber como adicionar valores de campo para estes mesmos campos de formulário? Dê uma vista de olhos ao nosso artigo sobre Como Adicionar Valores de Campo para Campos de Lista Suspensa, Caixas de Seleção e Escolha Múltipla.