MW WP Form のフォームの項目を動的に変更する

以前のブログはこちら

広告

こんにちは。ましじめの田村です。

私が執筆した著書、『現場のプロから学ぶ CSSコーディングバイブル』は、Web制作の現場で役立つテクニックやノウハウをまとめています。
興味を持っていただけた方は、ぜひご覧ください。
https://amzn.to/3A8kNHC

このリンクは Amazon のアフィリエイトプログラムを通じて設定されています。

こんにちは。ましじめの田村です。

MW WP Formのラジオボタンを管理者が入力したデータによって動的に変更したいというケースがありました。

MW WP Formは様々なすばらしいフィルターフックが用意されておりマニュアルを確認すると次のコードで実現可能なようです。

マニュアルはこちら
https://plugins.2inc.org/mw-wp-form/filter-hook/mwform_choices/
「ラジオボタン、チェックボックス、セレクトボックス」の選択項目を変更可能とのことです。

// 管理画面入力側
[mwform_radio name="my_radio" children="指定なし"]
// function.php

$form_id = xxx;

//フォームの値を動的に変更する
//--------------------------------
function contact_form_my_radio($children, $atts)
{
 if ($atts['name'] === 'my_radio') {
  $children = [];
  $args = [
      'post_type' => 'my_post'
  ];
  $customPosts = get_posts($args);
   foreach ($customPosts as $post) {
    $children[$post->ID] = $post->post_title;
   }
 }
 return $children;
}
add_filter('mwform_choices_mw-wp-form-' . $form_id, 'contact_form_my_radio', 10, 2);

さらにURLの引数を見て初期値を設定したい場合は次のコードを参考にすると実現できました。

マニュアルはこちら
https://plugins.2inc.org/mw-wp-form/filter-hook/mwform_value/

// url引数`radio_id`の値によって初期選択を変える
function contact_form_my_radio_value( $value, $name ) {
  if ( $name === 'my_radio' && !empty( $_GET['radio_id'] ) && !is_array( $_GET['radio_id'] ) ) {
      return $_GET['radio_id'];
  }
  return $value;
}
add_filter( 'mwform_value_mw-wp-form-' . $form_id, 'contact_form_my_radio_value', 10, 2 );

MW WP Form のフォームの項目を動的に変更したい場合に参考にしてみてください。


関連するタグ

この記事を書いた人

たむら しょうご

HTML&CSSコーダー

ウェブアクセシビリティ対応、フロントエンド開発、CMSを利用したウェブサイト制作を担当しています。
趣味はガーデニングです。

ましじめのスキルが必要ですか?

遠慮なくご相談ください。我々はあなたのプロジェクトに最善を尽くし、あなたのウェブサイトの制作を強力にサポートいたします。

お問い合わせはこちらから