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

最終更新: 2022/01/09/公開: 2021/04/07
この記事は 2021年4月7日 に投稿されました。
内容が古いかもしれません。ご注意ください。
※最後に更新されたのは 2022年1月9日 です。

【2020/1/9 更新】
MW WP Formですが2022年1月現在で1年間更新がストップしています。

(有料アドオンも販売停止中)
動向を確認する必要がありますが将来的に非推奨かもしれません。

選定する際はご注意ください。

MW WP Form 関係の案件についてはちょっと迷っています…。基本的には僕は MW WP Form をやりたくないので、MW WP Form 関係の案件もやりたくないのですが、そこそこ需要があるみたいだし、MW WP Form 自体に手を入れるのは現状僕しかできないので、全部お断りするのも申し訳ないな…という気持ちがあります。

2019年からの受託業務の方針について(モンキーレンチ)

概要

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

ちなみに繰り返しフィールドを用いるので、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 );

設置・動作確認

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

おわり。