【WordPress】MW WP Formで選択項目の値をフックでいろいろ変更したい

WordPress

以前にも紹介した、WordPressでお問い合わせフォームやお申し込みフォームなどを簡単に作成・設置できるプラグイン「MW WP Form」で、選択項目(ラジオボタン、チェックボックス、セレクトボックス)をフックでいろいろ変更する例を紹介します。

カスタム投稿の記事タイトルを選択項目にする

公式マニュアルにも載っている方法です。今回は少し足して選択項目の最後に「その他」を追加します。

MW WP Form側での設定

MW WP Formの画面から選択項目のフォームタグを選びます。なんでも構いませんが、サンプルではチェックボックスを選んでいます。

お問い合わせ商品選択:[mwform_checkbox name="商品" separator=","]

functions.php

functions.phpの記述例です。XXXの部分はフォーム識別子になります。

// MW WP Formのチェックボックスにカスタム投稿のタイトルを入れる
function form_products_list( $children, $atts ) {

  /* 値を入れるチェックボックスのname属性を指定(サンプルでは「商品」) */
  if ( $atts['name'] == '商品' ) {

    /* get_posts()関数で値にするカスタム投稿の配列を取得 */
    $products = get_posts( array(
      'post_type' => 'product',
      'posts_per_page' => -1,
    ) );

    /* 取得した配列からタイトルだけを抽出 */
    foreach ( $products as $product ) {
      $children[$product->post_title] = $product->post_title;
    }

    /* 最後に「その他」を追加したい場合(送信値 => 表示値) */
    $children += array( 'その他' => 'その他' );
  }

  return $children;
}
add_filter( 'mwform_choices_mw-wp-form-XXX', 'form_products_list', 10, 2 );

これで商品が新しく追加された際や、更新・削除されても自動で選択項目が変更されます。便利!

カスタムタクソノミーを選択項目にする

今度はカスタム投稿ではなく、カテゴリー(カスタムタクソノミー)を選択項目にします。こちらは選択項目の最初に「すべてのカテゴリー」を追加しています。

MW WP Form側での設定

MW WP Formの画面から選択項目のフォームタグを選びます。サンプルではセレクトボックスを選んでいます。

お問い合わせ商品カテゴリー選択:[mwform_select name="商品カテゴリー"]

functions.php

functions.phpの記述例です。XXXの部分はフォーム識別子になります。

// MW WP Formのセレクトボックスにカスタムタクソノミーを入れる
function form_product_cat_list( $children, $atts ) {

  /* 値を入れるチェックボックスのname属性を指定(サンプルでは「商品カテゴリー」) */
  if ( $atts['name'] == '商品カテゴリー' ) {

    /* 商品カテゴリーを取得 */
    $categoryList = get_terms( 'product_cat', 'hide_empty=0' );

    /* 取得した配列からターム名だけを抽出 */
    foreach ( $categoryList as $category ) {
      $children[$category->name] = $category->name;
    }

    /* 値の最初に「すべてのカテゴリー」を追加したい場合(送信値 => 表示値) */
    $children = array( 'すべてのカテゴリー' => 'すべてのカテゴリー' ) + $children;
  }

  return $children;
}
add_filter( 'mwform_choices_mw-wp-form-XXX', 'form_product_cat_list', 10, 2 );

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*