ブログ

トップページ > ブログ記事一覧 > [WordPress] ACFとMW WP Formで、チェックボックスとカスタムフィールドの値を使って本文と宛先を追加する

[WordPress] ACFとMW WP Formで、チェックボックスとカスタムフィールドの値を使って本文と宛先を追加する

  • 投稿日:2021/04/07
  • 最終更新:2021/04/08

概要

ユーザーにチェックを付けてもらった中身に応じて、下記のことをやる。
・本文へメッセージを追加
・宛先を追加

ちなみに繰り返しフィールドを用いるので、ACFはPro版を使います。

仕組み

入力内容の値とカスタムフィールド内のきっかけになる値を比較
→同じだったらカスタムフィールド内の値を使って本文追加と宛先追加を行う

特に何もしなければ基本設定の内容にてメールは送信される。

やること

フォームを作る

フォームを作ります。

カスタムフィールドを設定する

下記の構造にて条件を「投稿」として当該のフォームにだけ出るように設定する。

繰り返しフィールド
 └ テキストフィールド:チェックボックス項目の値と揃えた文字列(会社名とか商品名とかが入るようなやつです)
 └ グループ:テキストフィールドで設定した名称の中の詳細(今回は下記)
  └ リンク
  └ メールアドレス

functions.phpにフォームのフィルターフックを使っての動作を記述

下記のフィルターフックを用いるとゴニョゴニョできます。

公式ヘルプ

↑自動返信メール用
↑管理者宛メール用

記述内容

チェックボックスが複数の数値を持っていると配列の予感がしますが、コンマで区切られたただの文字列が入るので、文字列が入ってるか考えればOKです。

メールアドレスはスペースなしコンマ区切りで設定されていればプラグイン側で区切り文字でちぎってる感じの動きなので、コンマ付きで追加します。

function my_mail_action( $Mail, $values, $Data ) {
  $checkbox = $Data->get( '値を取得するチェックボックス要素のname属性' );

  //本文に追加
  if( have_rows( '繰り返しフィールドの名前',フォームの投稿ID ) ){
    while( have_rows( '繰り返しフィールドの名前',フォームの投稿ID ) ){
      the_row();

      $hoge_name = get_sub_field('名称のテキストフィールド');
      $hoge_grp = get_sub_field('グループフィールド');

      if( strpos($checkbox,  $hoge_name) !== false ){
        //以下適宜調整・本文への追加
        $Mail->body .= "\n\n".$company_name_cf.'なんか追加したい内容';
        $Mail->body .= "\n\n".''.$hoge_grp['グループフィールド内のURLの項目'];
        //こっちはメールアドレスの宛先追加。,を必ず付けます。
        $Mail->to .= ','.$hoge_grp['グループフィールド内のメールアドレスの項目'];
      }
    }
  }
  return $Mail;
}
add_filter( 'mwform_admin_mail_mw-wp-form-フォームの番号', 'my_mail_action', 10, 3 );

設置・動作確認

このまま動けば御の字です。

おわり。