情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。
MW Form は開発終了となりましたので、Contact Form 7 が推奨となります。Contact Form 7 で送信内容を取得するコードは
$submission = WPCF7_Submission::get_instance(); if ( $submission) { $formdata = $submission->get_posted_data(); if ($formdata['date']) { $id = $formdata['postid'];~
MW Form とAdvanced Custom Fieldsで連携してデータを更新する関数等について、バラバラと書いてきたので、少しまとめたいと思います。今後も追記の予定。
MW Form での送信時にacf の値を更新する基本形
function my_mwform_after_send( $Data ) { if ( $Data->get_form_key() === 'mw-wp-form-xx' ) { $id = $Data->get( 'id' ); $seat = get_field('seats', $id); $select = (int) $_POST['select']; $addition = $seat + $select; update_field('seats', $addition, $id); $available = get_field('available', $id); $minus = $available - $count; update_field('available', $minus, $id); } } add_action( 'mwform_after_send_mw-wp-form-xx', 'my_mwform_after_send' );
更新する投稿のIDを取得 $id = $Data->get( ‘id’ ); 、投稿からフォームページに遷移する場合は $id = $_GET[‘post_id’];
フィールドのアップデート update_field(‘フィールド名’, ‘値’, $id); *上の例は予約数をプラス・残数をマイナス
サブフィールドのアップデート update_sub_field( array(‘リピーターのキー’, 1, ‘サブフィールドのキー’), ‘値’, $post_id); *リピーター1行目のサブフィールドを更新
入れ子になったサブフィールドのアップデート update_sub_field( array(‘外側のリピーターのキー’, 3, ‘内側のリピーターのキー’, 5, ‘更新したいサブフィールドのキー’), ‘値’, $post_id); *外側のリピーター3行目・内側のリピーター5行目のサブフィールドを更新
イベントカレンダー対策で予約数・残数のアップデート時にタイトルもアップデートしたい場合の例
$id = $Data->get( 'id' ); $seat = get_field('seats', $id); $select = (int) $_POST['select']; $addition = $seat + $select; update_field('seats', $addition, $id); $available = get_field('available', $id); $minus = $available - $select; update_field('available', $minus, $id); $etitle = get_field('eventtitle', $id); $available2 = get_field('available', $id); $post = get_post($id); $post = array( 'post_title' => $etitle.' (残席:'.$available2.')', ); wp_update_post( $post );
サブフィールドのアップデートについての追記
表示側でget_row_index()で行数を取得・メールにつけて送信する。
*カスタムフィールドの値はMW Form で直接取得できるが、それ以外はパラメータで送って、以下のようにしてフィールドに入れる。
外側のリピーターのループで $rows = get_rows_index(); 内側のリピーターのループで $subrows = get_row_index();
function my_mwform_value( $value, $name ) { if ( $name === 'date' ) { return $_GET['date']; } if ( $name === 'rows' ) { return $_GET['rows']; } if ( $name === 'subrows' ) { return $_GET['subrows']; } return $value; } add_filter( 'mwform_value_mw-wp-form-xxx', 'my_mwform_value', 10, 2 );
*実際は$_GET[‘date’]; に if をつけるべき
その他のAdvanced Custom Fields に関する記事一覧
- ACF デートピッカーのフォーマット設定
- ACF リピーターをカレンダーに出力(予約カレンダーの実装)
- ACF 入れ子リピーターの内側だけループ
- WP REST API 独自エンドポイントとACF
- ACF 値の登録や保存
- REST API でACFの表示など
- Advanced Custom Fields の表示、まとめ
- PHP8以降で出るWarning
- イベントの開催期間の表示
- イベント終了時にタイトルに追加する
- アクセスランキング
- ワードプレスからメール送信
- CF7で予約した人にリマインドメールを送る
- ACF 設定ページ(オプションページ)
- ACF escape HTML
- 出勤・スケジュール管理の覚書2
- ACF 複数選択チェックボックスのチェックの有無
- Advanced Custom Fields で役立つ関数
- 日時予約簡易版
- ACF チェックボックス(複数選択)のアップデート