この実装、面倒なら代行します
たとえば、席数が決まっているセミナーの参加申し込みの受付をContact Form 7 でおこない、受け付けたら(問い合わせメール送信後)残席数を1つ減らしたい、という要件の対応方法について。
通常セミナーなどの申込みフォームの場合、そのフォームはそれぞれのセミナー情報に個別に紐づくようには作らず、1つの共通のフォームに値を渡しておこなうと思います。
GET値をContact Form 7に渡してフォームに埋め込む
に記事がありますので、まずはそれを参考にGET値をContact Form 7に渡すところまでおこないましょう。
例として以下のようにsmnという変数でURLに記事IDを付け、フォームからメールが送信されたらその記事IDを持つセミナーのカスタムフィールド“semi_seat”の値を1つ減らしてみます。
http://domain.com/form/?smn=60
まず、上の記事にもありますが、GET値をContact Form 7に渡すプログラムを functions.php に以下のように記述します。
function kaiza_form_tag_filter($tag){ if ( ! is_array( $tag ) ) return $tag; if(isset($_GET['smn'])){ $postid = htmlspecialchars($_GET['smn']); $name = $tag['name']; if($name == 'postid') $tag['values'] = (array) $postid; } return $tag; } add_filter('wpcf7_form_tag', 'kaiza_form_tag_filter', 11);
次にContact Form 7で作成するフォームに次の記述をします。
[hidden postid]
hiddenはContact Form 7のタグのひとつで、type=”hidden”と同義です。
したがって表示はされません。
そして、このpostidの値をIDに持つセミナーのカスタムフィールド(今回もアドバンストカスタムフィールドを利用した場合の書き方です)“semi_seat”の値を1つ減らす処理を、functions.phpに記述します。
add_action('wpcf7_mail_sent', 'kaiza_wpcf7_update_field', 10, 1); function kaiza_wpcf7_update_field(){ $submission = WPCF7_Submission::get_instance(); if ( $submission && $_POST['_wpcf7c'] ==='step2') { $formdata = $submission->get_posted_data(); $postid = $formdata['postid']; $count = (int) get_field('semi_seat',$postid); $count--; // update update_field('semi_seat', $count,$postid); } }
なお、5行目の
&& $_POST['_wpcf7c'] ==='step2'
は、プラグイン「Contact Form 7 add confirm」(Contact form 7 バージョン5.4以降はこのプラグインは機能しませんのでご注意です)を使用してフォーム確認画面を出力する場合に必要になる記述です。
「Contact Form 7 add confirm」を使用しない場合は必要のない記述です。
ひと通り駆け足で説明しましたが、これで、Contact Form 7でメールが送信された後、カスタムフィールド“semi_seat”の値を1つ減らすことができるようになりましたよと。
セミナー運用がより効率的になりますね。
現在あなたが利用されているWordPressテーマを活かしたまま、セミナーやイベントの参加申込み受付ができるWordPressテーマを、子テーマとして購入できます。
テーマの内容についてはこちらをご覧ください。
『WordPress製
セミナーやイベントの参加申込み受付システム』
ダウンロードしたファイルに同梱の手順に従い設定をおこない、子テーマを有効化するだけで、現在お使いのデザインテーマにセミナーやイベントの参加申込み受付機能が自動付与されます。
なお、デザインは入っておりません。自由にstyleを設定してください。
※ テーマは買い切りです
※ 自由に改変してお使いいただいて構いません
※ すでに子テーマでサイト運用されている方は、当該子テーマをマージしてください
また、本テーマには、セミナーやイベントの参加申込み受付機能を実現するために必要な次の事例解決も含まれています。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。