AI要約
チェックボックス、複数選択、ドロップダウンフィールドの動的選択肢オプションをカスタマイズしますか?動的選択肢を使用しているが、特定の投稿、ページ、またはカテゴリを除外したい場合は、このチュートリアルが役立ちます!
複数選択、チェックボックス、ドロップダウンフィールドは、投稿またはページのタイトルを動的選択肢として動的に表示するように設定できます。
デフォルトでは、動的選択肢が有効になっている場合、その特定の投稿タイプまたはタクソノミーの公開されているすべてのアイテムが表示されます。
たとえば、動的選択肢が投稿タイプに設定され、動的投稿タイプソースが投稿に設定されている場合、公開されているすべての投稿がフィールドの選択肢として表示されます。

このチュートリアルでは、サイトから動的に生成された投稿タイトルのドロップダウンを表示します。
フォームの作成
まず、名前、メールアドレス、訪問者が最も気に入った投稿を選択できる機能、そしてコメントセクションをキャプチャするフォームを作成します。
このため、フォームに名前、メールアドレス、ドロップダウン、段落テキストのフォームフィールドを追加します。
ドロップダウンフィールドを追加したら、高度なオプションをクリックし、動的選択肢ドロップダウンで投稿タイプをクリックします。これにより、動的投稿タイプソースの別のドロップダウンが表示されます。この2番目のドロップダウンが表示されたら、ドロップダウンから投稿を選択し、フォームの保存をクリックします。

特定のカテゴリからの投稿を含めるスニペットの追加
コードスニペットを使用して、これらのオプションをさらにカスタマイズすることもできます。特定のカテゴリからの投稿のみを含めたり、特定のカテゴリからの投稿を除外したりすることもできます。
たとえば、このチュートリアルでは、特定のカテゴリからの投稿のみを表示したいので、カテゴリ11からの投稿のみでドロップダウンをポップulateするコードスニペットを追加します。
コードスニペットをサイトに追加する方法については、このチュートリアルを参照してください。
/**
* 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 );
コードスニペットのフォームとフィールドIDを、お使いのフォームとフィールドID番号と一致するように変更することを忘れないでください。フォームとフィールドID番号を見つけるのにヘルプが必要な場合は、このチュートリアルを確認してください。
複数のカテゴリIDに対する複数のフォームの制限
このコードスニペットをさまざまなフォームやフィールドに使用できることをご存知でしたか?
以下のコードは、2つの異なるフォーム内の動的オプションを制限します:
- フォームID
363のフィールドID1は、カテゴリID11の投稿のみを表示します - フォームID
225のフィールドID20は、カテゴリ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 );
タクソノミーによる制限
タクソノミーは、WordPressでカテゴリやタグなどを定義するために使用される用語です。
ダイナミック選択肢がタクソノミーに設定され、ダイナミックタクソノミーソースがカテゴリに設定されている場合、すべてのカテゴリがフィールドの選択肢として使用されます。

ただし、以下のスニペットを使用して特定のカテゴリを除外できます。
/**
* 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 );
このスニペットは、IDが4、5、6、11のカテゴリをダイナミック選択肢オプションから除外します。スニペットのexcludeをincludeに置き換えると、追加したIDを持つカテゴリのみが表示されます。

未来の投稿のみを表示する
/*
* 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 );
現在ログインしているユーザーの投稿のみを表示する
/*
* 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 );
特定の投稿者IDからの投稿を表示する
/**
* 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 );
子カテゴリのみを表示する
/**
* 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 );
よくある質問
Q: WooCommerceのカテゴリ用にこれをカスタマイズするにはどうすればよいですか?
A: WooCommerceのタクソノミーの場合、チェックボックス、ドロップダウン、または複数選択フィールドの[高度]タブで、ダイナミック選択肢を商品に設定し、ダイナミックタクソノミーソースで商品カテゴリを選択します。
次に、特定のカテゴリのみを含めたい場合は、上記と同じ方法でIDを見つけます。WordPress管理画面で、左側のWordPress管理メニューの[商品]の下にある[カテゴリ]をクリックします。IDが必要な各商品カテゴリをクリックします。URLは次のようになります。?taxonomy=product_cat&tag_ID=90&post_type=product&wp_http_referer=%2Fwp-admin%2Fedit-tags.php%3Ftaxonomy%3Dproduct_cat%26post_type%3Dproduct
この例では、ID番号は90になります。
したがって、スニペットは次のようになります。
/**
* 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 );
Q: WooCommerceのカテゴリから特定の商品の表示のみを行うにはどうすればよいですか?
A: もちろんです。ダイナミック選択肢を商品に設定し、ダイナミックタクソノミーソースで商品カテゴリを選択します。
そして、商品カテゴリIDを使用する代わりに、名前を使用します。
/**
* 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 );
装飾は、私たちの商品カテゴリの名前です。ご自身のニーズに合わせて変更することを忘れないでください。
Q: カスタムタクソノミーからの投稿をWPFormsのドロップダウンフィールドに表示するにはどうすればよいですか?
A: カスタムタクソノミーからの投稿をWPFormsのドロップダウンフィールドに表示するには、ダイナミック選択肢の引数を変更する必要があります。現在、ドキュメントで提供されている例はカテゴリをカバーしています。ここでは、特定のタクソノミーから投稿を取得するようにコードをカスタマイズする方法を示す例を示します。
/**
* 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 );
tax_query配列は、カスタムタクソノミー(この例ではサンプル)とタームID(この例では8)を指定するために使用されます。必要に応じて、「samples」と8を独自のタクソノミーとタームIDに置き換えてください。taxクエリの詳細については、WordPressのドキュメントを参照してください。
これで完了です!WPFormsで動的な選択肢をカスタマイズするさまざまな方法を学びました。
これらの同じフォームフィールドにフィールド値を追加する方法を知りたいですか?ドロップダウン、チェックボックス、複数選択フィールドのフィールド値の追加方法の記事をご覧ください。