WordPressのコンタクトフォーム

WordPressのコンタクトフォームを作成、設置しました。WordPressのカスタムページテンプレートという仕組みを使っています。

フォームでは、名前とメールアドレス、内容を記入し送信できます。また、簡易的なロボットチェックがついています。

以下のサイトを参考にして作りました。

How To Build Your Own WordPress Contact Form and Why

カスタムページテンプレート

カスタムページテンプレートとは、WordPressの固定ページで使われるテンプレートファイルで、固定ページを作成する際に、右側に現れるページ属性を選択することで、そのテンプレートを固定ページに適用できるようになります。

WordPress Codex ページテンプレート カスタムページテンプレート

カスタムページテンプレートは、以下のステップで使用することができます。

1.テンプレートの元になる空のphpファイルを作成する。今回はコンタクト用のテンプレートを作りたいので、contact.phpという名前にする。

2.空のphpファイルの一番上に、下のようなコメントを記述する。今回はコンタクト用のページを作るので、Contact というテンプレートの名前にする。この時点で、管理画面の固定ページの編集の際に、編集ページの右側でそのテンプレートが適用できるようになります。

<?php
/*
Template Name: Contact
*/
?>
<?php

3.このphpファイルの中にテンプレートの内容を記述する。

コンタクトフォームのロジックと実装

参照先のサイトが大変分かりやすく説明してくれています。

同じようにコードを書いていくだけです。

Undefined index エラー

同じように書いていくと、Undefined index エラーがでてました。 コードの以下の部分、その他同じようにユーザーからの入力を格納する変数についてのエラーです。

//user posted variables
$name = $_POST['message_name'];
$email = $_POST['message_email'];

このエラーは 、isset 関数を使うか、エラー制御演算子@を使うことで解決できました。具体的には、上のコードは以下のように修正します。

//user posted variables
//@演算子を使う
@$name = $_POST['message_name']; 
//isset関数を使う
if(isset($_POST['message_email'])){$email=$_POST['message_email'];}

php マニュアル isset

php マニュアル エラー制御演算子

Nonce

参照サイトでは、出来るようになったら載せればいいよ風に書いてあるナンスを加えます。

wikipedia ノンス(ナンス)

WordPressでは、wp_nonce_filed()という関数を使うことでナンスを簡単に作成できます。

WordPress Codex 関数リファレンス/wp nonce field

このNonceを用いて、validationの際に、他と合わせて正しい接続かどうかを判定するようにします。