Volete personalizzare le opzioni di Scelte dinamiche per i campi Checkbox, Scelta multipla e Dropdown? Se utilizzate le Scelte dinamiche ma volete escludere post, pagine o categorie specifiche, questo è il tutorial che fa per voi!
I campi a scelta multipla, le caselle di controllo e i campi a discesa possono essere configurati per visualizzare dinamicamente i titoli dei post o delle pagine come scelte dinamiche.
Per impostazione predefinita, quando si abilitano le scelte dinamiche, vengono visualizzati tutti gli elementi pubblicati di quel determinato tipo di post o tassonomia.
Ad esempio, quando Scelte dinamiche è impostata su Tipo di post e l'origine del tipo di post dinamico è impostata su Post, tutti i post pubblicati saranno visualizzati come scelte di campo.

Per la nostra esercitazione, visualizzeremo un elenco di titoli di post generati dinamicamente dal nostro sito.
Creazione del modulo
Per iniziare, creeremo un modulo che catturi il nome, l'e-mail, la possibilità per il visitatore di selezionare il post che gli è piaciuto di più e una sezione per i commenti.
Per questo motivo, aggiungeremo al nostro modulo un campo Nome, un campo Email, un campo a discesa e un campo Testo del paragrafo.
Una volta aggiunto il campo a discesa, fare clic su Opzioni avanzate e nel menu a tendina Scelte dinamiche fare clic su Tipo di post. Verrà visualizzato un altro menu a tendina per Origine del tipo di post dinamico. Quando si visualizza questo secondo menu a tendina, selezionare Post dal menu a tendina e fare clic su Salva nel modulo.

Aggiunta dello snippet per includere i post di una singola categoria
È possibile personalizzare ulteriormente queste opzioni utilizzando degli snippet di codice. È possibile includere solo i post di una particolare categoria o anche escludere i post di una particolare categoria.
Per esempio, nel nostro tutorial, vogliamo mostrare solo i post di una specifica categoria, quindi verrà aggiunto il nostro snippet di codice che popolerà il nostro menu a tendina solo con i post della categoria 11.
Per un aiuto nell'aggiunta di snippet di codice al vostro sito, consultate questo 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 );
Ricordarsi di modificare l'ID del modulo e del campo negli snippet di codice in modo che corrisponda al numero ID del modulo e del campo. Se avete bisogno di aiuto per trovare i numeri di ID del modulo e del campo, consultate questo tutorial.
Limitazione di più moduli per più ID di categoria
Sapevate che potete avere questo snippet di codice anche per vari moduli e campi?
Il codice seguente limita le opzioni dinamiche all'interno di due diversi moduli:
- ID campo
1
del modulo ID363
per visualizzare solo i messaggi con l'ID della categoria11
- ID campo
20
del modulo ID225
per visualizzare solo i messaggi della 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 );
Limitazione per tassonomia
Una tassonomia è un termine utilizzato in WordPress per definire elementi come categorie e tag.
Se l'opzione Scelte dinamiche è impostata su Tassonomia e l'opzione Origine tassonomia dinamica è impostata su Categorie, tutte le categorie saranno utilizzate per le scelte di campo.

Tuttavia, è possibile escludere categorie specifiche utilizzando lo snippet seguente.
/**
* 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 );
Questo snippet esclude le categorie con ID 4, 5, 6 e 11 dalle opzioni di scelta dinamica. Se si sostituisce exclude
con include
nello snippet qui sopra, mostrerà solo le categorie con gli ID aggiunti.

Visualizzazione dei soli messaggi futuri
/*
* 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 );
Visualizzazione dei soli messaggi dell'utente correntemente connesso
/*
* 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 );
Mostra i post di un particolare ID autore
/**
* 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 );
Visualizzazione delle sole categorie di bambini
/**
* 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 );
Domande frequenti
D: Come posso personalizzarlo per una categoria di Woocommerce?
R: Per le tassonomie di Woocommerce, nella scheda Avanzate del campo Checkbox, Dropdown o Multiple Choice, impostare le Scelte dinamiche su Prodotto e per l'Origine tassonomia dinamica selezionare Categorie di prodotti.
Se poi si volesse includere solo categorie specifiche, si troverebbe l'ID nello stesso modo in cui si è fatto sopra. Dall'amministrazione di WordPress, fare clic su Categorie trovato sotto Prodotti nel menu di amministrazione di WordPress a sinistra. Fare clic su ogni Categoria di prodotto si desidera l'ID. L'URL avrà un aspetto simile a questo:?taxonomy=product_cat&tag_ID=90&post_type=product&wp_http_referer=%2Fwp-admin%2Fedit-tags.php%3Ftaxonomy%3Dproduct_cat%26post_type%3Dproduct
In questo esempio, il numero di identificazione è 90.
Pertanto, il vostro snippet sarà il seguente.
/**
* 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 );
D: Come posso mostrare solo alcuni prodotti di una categoria di Woocommerce?
R: Naturalmente. Si impostano le scelte dinamiche suProduct e per l'origine della tassonomia dinamica si selezionano le categorie di prodotti.
E invece di usare l'ID della categoria di prodotto, si usa il 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 );
Decor è il nome della nostra categoria di prodotti. Ricordate di modificarlo per adattarlo alle vostre esigenze.
D: Come posso mostrare i post di una tassonomia personalizzata in un campo a discesa di WPForms?
R: Per visualizzare i post di una tassonomia personalizzata in un campo a discesa di WPForms, è necessario modificare gli argomenti della scelta dinamica. Attualmente, gli esempi forniti nella nostra documentazione riguardano le categorie. Ecco un esempio che mostra come personalizzare il codice per recuperare i post da una tassonomia specifica.
/**
* 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 );
Il tax_query
è usato per specificare la tassonomia personalizzata (campioni in questo esempio) e l'ID del termine (8 in questo esempio). Sostituire "samples" e 8 con la propria tassonomia e il proprio ID di termine, se necessario. Per ulteriori informazioni sulle query fiscali, consultare la sezione Documentazione di WordPress.
E questo è tutto! Avete imparato i vari modi per personalizzare le scelte dinamiche in WPForms.
Volete sapere come aggiungere valori di campo per questi stessi campi del modulo? Date un'occhiata al nostro articolo su Come aggiungere valori di campo per campi a discesa, caselle di controllo e a scelta multipla.