「MW WP Form」で作成した問い合わせフォームの送信先を投稿ページごとに設定する方法

Programming Web

この記事について
Web制作者

WordPressを使ったWebサイト制作者
「ページごとに共通の問い合わせフォームを設置して、ページごとに送信先を設定したい」

こういった要望にお応えします。

本記事の内容

  • 「MW WP Form」の送信先を投稿ページごとに設定する具体的な方法

こんにちは、mineです。
Web制作歴は7年になります。

Web制作する上で、問い合わせフォームの設置は避けては通れない道です。
WordPressにおける代表的な問い合わせフォームの作成方法として、下記のようなものがあります。

問い合わせフォーム作成方法

  • MW WP Form(プラグイン)
  • Contact Form 7(プラグイン)
  • Googleフォーム
以前、WordPressでメディアサイト制作をしていた時に、投稿ページごとに送信先を設定して、お問い合わせできるようにしたいという要望がありました。

この記事では、「MW WP Form」で問い合わせフォーム作成時、問い合フォームは共通のものを使い、投稿ページごとに異なる送信先を設定する方法を紹介します。

「MW WP Form」でページごとに送信先を設定するってどういうこと?

はてな

「MW WP Form」ではフォームを一つ作成すると、通常送信先を1パターン(※)だけ設定できます。

※1パターンと記述しているのは、送信先メールアドレス自体は複数設定できるためです。

通常の場合(すべて同じ送信先)

  • ページA → aaaa@abcde.xyz
  • ページB → aaaa@abcde.xyz
  • ページC → aaaa@abcde.xyz
同じメールアドレスに送信

通常だと問い合わせフォーム自体は、1つの問い合わせフォームに対してページごとに送信先(メールアドレス)を設定することができません。

ページごとに設定する場合

  • ページA → aaaa@abcde.xyz
  • ページB → bbbb@abcde.xyz
  • ページC → cccc@abcde.xyz
ページごとに設定したメールアドレスに送信

今回、ページごとにメールアドレスを設定できるようにカスタマイズします。

「MW WP Form」を使った具体的な問い合わせフォーム自体の作成方法や細かい仕様についてはここでは省略します。

ページごとに送信先を設定する方法

送信先

ページごとに送信先を設定する方法として大きく2つあります。

ページごとに送信先を設定する方法

  • 1.一つ雛形となるフォームを作成し、ページごとに複製して送信先を設定する(ページの数だけフォームの種類がある)
  • 2.一つフォームを作成し、フォームは共通で使用してページごとに送信先(フォームの種類は一つだけ)

1の方法は、いちいち複製する手間もかかるし、入力項目変更等のメンテナンス性が低いので却下です。

今回は2の方法を採用して、具体的に方法を紹介します。

具体的な方法

  • 「MW WP Form」でフォームを作成し、ショートコードを任意の場所に記述する
  • プラグイン「Advanced Custom Fields」をインストールして、送信先をカスタムフィールドで作成する
  • function.phpに送信先をページごとに設定したカスタムフィールドの送信先に書き換える処理を記述する

ここから詳しく説明します。

「MW WP Form」でフォームを作成し、ショートコードを任意の場所に記述する

ここでは細かい説明は省きますが、通常通りに「MW WP Form」で問い合わせフォームを作成して、投稿ページ(だいたいsingle.php)の任意の場所にショートコードを記述します。

このときに、フォーム識別子のkey(数字のID)を把握しておきます。

WordPressプラグイン「Advanced Custom Fields」をインストールして、送信先をカスタムフィールドで作成する

次に送信先を設定するための入力項目をカスタムフィールドで作成します。

WordPressプラグイン「Advanced Custom Fields」をインストールして有効化すると管理画面のメニューに「カスタムフィールド」のリンクが追加されます。

カスタムフィールド > 新規追加でフィールド名を「お問い合わせ設定」にします(分かりやすければ何でもいいです)。
フィールドを追加ボタンで、フィールドラベルを「送信先」、フィールド名を「destination」、フィールドタイプ「メール」を選択して、公開ボタンをクリックして準備は完了です。

投稿ページ新規作成もしくは、編集画面を表示すると、画面下に「お問い合わせ設定」が表示され「送信先」という入力欄が表示されています。
ここに送信先のメールアドレスを記述します(メールアドレスはカンマで区切れば複数設定可能です)。

function.phpに送信先をページごとに設定したカスタムフィールドの送信先に書き換える処理を記述する

使用しているテーマのfunction.phpに下記コードを記述します(function.phpはバックアップを取ってから編集しましょう)。

// 送信先設定
function change_admin_address_mwform($Mail, $values, $Data) {
	// post_idに紐づく送信先(カスタムフィールドで設定)を取得
	$field = get_post_meta(get_the_ID(), 'fieldname', true);
	if($field){
		$Mail->to = $field;
	}
	return $Mail;
}
add_filter('mwform_admin_mail_mw-wp-form-xxx', 'change_admin_address_mwform', 10, 3);

「fieldname」はカスタムフィールドのフィールド名に当たります。上記でフィールド名を「destination」としているので「fieldname」を「destination」に変更して記述します。

フィルターフック名mwform_admin_mail_mw-wp-form-xxxxxxの部分はフックを適用したいフォームの作成画面に表示されているフォーム識別子のkeyになります
※(例)[mwform_formkey key=”1356″] の場合は 1356

【参考】MW WP Formマニュアル

まとめ

ページごとに共通の問い合わせフォームを設置して、ページごとに送信先を設定する方法についてポイントを再度まとめます。

ポイント

  • 問い合わせフォームは通常通り作成する
  • カスタムフィールドで送信先メールアドレス設定用のフィールドを用意する
  • フィルターフックで、送信先メールアドレス設定を行う

具体的には、食べログみたいなお店の検索サイトで投稿ページでお店を登録して、それぞれに問い合わせ送信先を設定するみたいな使い方ですかね。

もし使える場面があれば試してみてください。

おすすめ記事 【体験談】弁護士の退職代行で有給30日分を取得した話

おすすめ記事 YouTubeライブで気をつけるべきチャットへのコメントマナーまとめ

おすすめ記事 お名前.comのドメインプロテクションは必要か【採算がとれるか】