WordPressのメールフォーム作成プラグイン「MW WP Form」で作成したお問い合わせフォームを全ての記事詳細ページで共通で使用しつつお問い合わせのメール送信完了後に完了ページへ遷移させる方法を書いていきます。
MW WP Form は確認・完了ページ有りのフォームを簡単に作れる便利なプラグインですが、設定を間違えると意図した動きをしてくれなくなりますので、各設定内容に誤りがないようにご利用ください。
エラーが起きる使い方
完了画面URL設定
導入したサイトは、不動産の物件情報を扱うサイトで物件詳細ページのURLは全て異なるので、完了ページのみを共通で利用しようと思い以下のように完了画面URLのみを設定してみました。
動作確認
フォーム内の全ての項目を正しく入力して問い合わせを行うと問題は起きないのですが、不足状態で入力したり何も入力しないまま確認ページへ遷移しようとすると「このページには直接アクセスできません」というエラーがフォームコンテンツ部分に表示され進めなくなってしまいます。
入力画面URL、確認画面URLを空白のままにせずURLを入力すればこのエラーは出ないのですが、入力画面のURLが全てことなる都合上空白のままにしていました。
意図した動きをする使い方
全てのURLを空白にする
中途半端に完了画面URLのみなどを入力するとエラーになりますので、全て空白で利用することにしました。
もちろんこのままですと全てのステップで同じURLになってしまい目的の完了ページへ遷移させることが出来ませんが、送信処理実行後に使えるアクションフック(mwform_after_send_mw-wp-form-xxx)が用意されていましたので、そちらを使うことにしました。
アクションフックを使って完了ページへリダイレクト
MW WP Form で用意していただいているアクションフックの中にメール送信完了後に実行される「mwform_after_send_mw-wp-form-xxx」というアクションフックがあります。こちらを利用して以下のコードをfunctions.php などに追加することで、フォームからの送信処理完了後に完了ページへリダイレクトさせることが出来ます。
/**
* 送信完了後に完了ページへ遷移
*/
function my_mwform_after_send( $Data )
{
$form_key = $Data->get_form_key();
if ( $form_key === 'mw-wp-form-123' ) {
//問い合わせフォーム
wp_redirect('/thanks');
exit;
}
}
add_action( 'mwform_after_send_mw-wp-form-123', 'my_mwform_after_send' );
動作確認環境
エックスサーバー(x10) PHP 7.2.17 MySQL 5.7 WordPress 5.3.2 MW WP Form 4.2.0
コメント