Möchten Sie die Dynamic Choices-Optionen für Ihre Checkbox-, Multiple-Choice- und Dropdown-Felder anpassen? Wenn Sie Dynamic Choices verwenden, aber bestimmte Beiträge, Seiten oder Kategorien ausschließen möchten, dann ist dies das richtige Tutorial für Sie!
Die Felder Multiple Choices, Checkboxes und Dropdowns können so konfiguriert werden, dass die Titel von Beiträgen oder Seiten dynamisch als Dynamic Choices angezeigt werden.
Wenn die dynamische Auswahl aktiviert ist, werden standardmäßig alle veröffentlichten Artikel dieses bestimmten Beitragstyps oder dieser Taxonomie angezeigt.
Wenn z. B. Dynamische Auswahlen auf Beitragstyp und die Quelle für den dynamischen Beitragstyp auf Beiträge eingestellt ist, werden alle veröffentlichten Beiträge als Feldauswahlen angezeigt.

Für unser Tutorial werden wir eine Dropdown-Liste mit dynamisch generierten Beitragstiteln unserer Website anzeigen.
Erstellen des Formulars
Zu Beginn werden wir ein Formular erstellen, das den Namen, die E-Mail-Adresse, die Möglichkeit für den Besucher, den Beitrag auszuwählen, der ihm am besten gefallen hat, und dann auch einen Kommentarbereich enthält.
Aus diesem Grund fügen wir unserem Formular die Formularfelder Name, E-Mail, Dropdown und Absatztext hinzu.
Nachdem Sie das Dropdown-Feld hinzugefügt haben, klicken Sie auf Erweiterte Optionen und in der Dropdown-Liste Dynamische Optionen auf Beitragstyp. Daraufhin wird ein weiteres Dropdown-Feld für die Quelle des dynamischen Beitragstyps angezeigt. Wenn Sie dieses zweite Dropdown-Feld sehen, wählen Sie Beiträge aus dem Dropdown-Feld und klicken Sie im Formular auf Speichern.

Hinzufügen des Snippets zur Aufnahme von Beiträgen aus einer einzelnen Kategorie
Sie können diese Optionen sogar noch weiter anpassen, indem Sie Code-Snippets verwenden. Sie können nur Beiträge aus einer bestimmten Kategorie aufnehmen oder sogar Beiträge aus einer bestimmten Kategorie ausschließen.
In unserem Tutorial wollen wir zum Beispiel nur Beiträge aus einer bestimmten Kategorie anzeigen, also wird unser Codeschnipsel hinzugefügt, der unser Dropdown nur mit Beiträgen aus der Kategorie 11 auffüllt.
Hilfe beim Hinzufügen von Code-Snippets zu Ihrer Website finden Sie in diesem 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 );
Vergessen Sie nicht, die Formular- und Feld-ID in Ihren Codeschnipseln so zu ändern, dass sie mit Ihrer Formular- und Feld-ID-Nummer übereinstimmt. Wenn Sie Hilfe bei der Suche nach Ihren Formular- und Feld-ID-Nummern benötigen, lesen Sie bitte dieses Tutorial.
Begrenzung mehrerer Formulare für mehrere Kategorie-IDs
Wussten Sie, dass Sie dieses Codeschnipsel auch für verschiedene Formulare und Felder verwenden können?
Der folgende Code schränkt dynamische Optionen in zwei verschiedenen Formularen ein:
- Feld-ID
1
des Formulars ID363
um nur Beiträge mit der Kategorie-ID anzuzeigen11
- Feld-ID
20
des Formulars ID225
um nur Beiträge aus der Kategorie ID anzuzeigen5
/**
* 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 );
Begrenzung nach Taxonomie
Eine Taxonomie ist ein Begriff, der in WordPress verwendet wird, um Dinge wie Kategorien und Tags zu definieren.
Wenn die dynamische Auswahl auf Taxonomie und die dynamische Taxonomiequelle auf Kategorien eingestellt ist, werden alle Kategorien für die Feldauswahlen verwendet.

Sie können jedoch bestimmte Kategorien ausschließen, indem Sie das folgende Snippet verwenden.
/**
* 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 );
Dieses Snippet schließt Kategorien mit den IDs 4, 5, 6 und 11 von den dynamischen Auswahlmöglichkeiten aus. Wenn Sie ersetzen exclude
mit include
im obigen Ausschnitt, werden nur Kategorien mit den von Ihnen hinzugefügten IDs angezeigt.

Nur zukünftige Beiträge anzeigen
/*
* 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 );
Nur Beiträge des aktuell angemeldeten Benutzers anzeigen
/*
* 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 );
Beiträge von einer bestimmten Autoren-ID anzeigen
/**
* 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 );
Nur Kinderkategorien anzeigen
/**
* 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
F: Wie kann ich dies für eine Woocommerce-Kategorie anpassen?
A: Für Woocommerce-Taxonomien setzen Sie auf der Registerkarte Erweitert Ihres Kontrollkästchens, Dropdown- oder Multiple-Choice-Feldes die dynamische Auswahl auf Produkt und wählen Sie für die dynamische Taxonomiequelle Produktkategorien.
Wenn Sie dann nur bestimmte Kategorien einbeziehen möchten, finden Sie die ID auf die gleiche Weise wie oben. Klicken Sie in der WordPress-Verwaltung auf Kategorien gefunden unter Produkte im WordPress-Verwaltungsmenü auf der linken Seite. Klicken Sie auf jede Produktkategorie Sie wollen die ID. Die URL wird etwa so aussehen:?taxonomy=product_cat&tag_ID=90&post_type=product&wp_http_referer=%2Fwp-admin%2Fedit-tags.php%3Ftaxonomy%3Dproduct_cat%26post_type%3Dproduct
In diesem Beispiel würde die ID-Nummer 90 lauten
Ihr Snippet würde also wie folgt aussehen.
/**
* 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 );
F: Wie kann ich nur bestimmte Produkte aus einer Woocommerce-Kategorie anzeigen?
A: Natürlich. Sie würden Ihre dynamischen Auswahlen aufProdukt einstellen und für die dynamische Taxonomiequelle Produktkategorien auswählen.
Anstelle der Produktkategorie-ID würden Sie den Namen verwenden.
/**
* 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 );
Dekor ist der Name unserer Produktkategorie. Denken Sie daran, dies Ihren eigenen Bedürfnissen entsprechend zu ändern.
F: Wie kann ich Beiträge aus einer benutzerdefinierten Taxonomie in einem WPForms Dropdown-Feld anzeigen?
A: Um Beiträge aus einer benutzerdefinierten Taxonomie in einem WPForms-Dropdown-Feld anzuzeigen, müssen Sie die Argumente für die dynamische Auswahl ändern. Derzeit sind die Beispiele in unserer Dokumentation decken Kategorien. Hier ist ein Beispiel, das zeigt, wie man den Code anpasst, um Beiträge aus einer bestimmten Taxonomie zu holen.
/**
* 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 );
Die tax_query
Array wird verwendet, um die benutzerdefinierte Taxonomie (in diesem Beispiel "samples") und die Term-ID (in diesem Beispiel "8") anzugeben. Ersetzen Sie "samples" und 8 durch Ihre eigene Taxonomie und Begriffs-ID. Weitere Informationen zu Steuerabfragen finden Sie in der WordPress-Dokumentation.
Und das war's! Sie haben nun die verschiedenen Möglichkeiten zur Anpassung der dynamischen Auswahl in WPForms kennengelernt.
Möchten Sie wissen, wie Sie Feldwerte für dieselben Formularfelder hinzufügen können? Schauen Sie sich unseren Artikel über das Hinzufügen von Feldwerten für Dropdown-, Kontrollkästchen- und Multiple-Choice-Felder an.