WordPress

最終更新日:
公開日:

ワークショップ

オリジナルのWordPressプラグインを作る(6)

WordPressにお問い合わせページを作成する(4)

お問い合わせページにフォームの入力した文字数を確認するバリデーション機能を実装していきます。

この記事のポイント

  • フォームの項目ごとに入力できる最大文字数を設定する
  • フォームに入力した文字数はmb_strlen関数で取得する

目次

もう1つのバリデーションを実装する

前回の「WordPressにお問い合わせページを作成する(3)」ではお問い合わせページのフォームに入力がされているかを確認するバリデーションを実装してきました。

前回作成したコード:GitHub

今回はフォームに入力した文字数を確認するバリデーションを実装していきます。

入力できる文字数に上限を設定する
入力できる文字数に上限を設定する

フォームに入力する名前、メールアドレス、お問い合わせ内容にはそれぞれ文字数の上限を設定します。
今後データベースとの連携も実装するにあたって、文字数を必要以上に入力できる状態にすることは予期せぬエラーの原因になることもあるため文字数の上限を設定していきます。

入力できる文字数を設定する

まずはフォームの名前、メールアドレス、お問い合わせ内容にそれぞれ何文字まで入力できるようにするか設定していきます。
page-contact.phpを開いて、以下の3つの定数を宣言してください。

page-contact.php

<?php

// フォームの入力できる最大文字数を設定
define( 'MAX_NAME_LIMIT', 10);
define( 'MAX_EMAIL_LIMIT', 100);
define( 'MAX_CONTENT_LIMIT', 100);

// 変数の初期化
$error = array();
$paeg_flag = 1;

----- 省略 -----

MAX_NAME_LIMITは名前の最大文字数として10文字、MAX_EMAIL_LIMITはメールアドレスの最大文字数として100文字、MAX_CONTENT_LIMITはお問い合わせ内容の最大文字数として100文字とそれぞれ設定しています。

文字数を確認するバリデーションを実装する

続いて、validation関数に上記の定数を使った文字数の確認機能を追加していきます。

page-contact.php

<?php

// フォームの入力できる最大文字数を設定
define( 'MAX_NAME_LIMIT', 10);
define( 'MAX_EMAIL_LIMIT', 100);
define( 'MAX_CONTENT_LIMIT', 100);

----- 省略 -----

function validation( $data ) {

    $error = array();

    if( empty($data['input_name']) ) {
		$error[] = 'お名前を入力してください';
	} else {

		if( MAX_NAME_LIMIT < mb_strlen($data['input_name']) ) {
			$error[] = '名前は'.MAX_NAME_LIMIT.'文字以内で入力してください。';
		}
	}

	if( empty($data['input_email']) ) {
		$error[] = 'メールアドレスを入力してください';
	} else {

		if( MAX_EMAIL_LIMIT < mb_strlen($data['input_email']) ) {
			$error[] = 'メールアドレスは'.MAX_EMAIL_LIMIT.'文字以内で入力してください。';
		}
	}

	if( empty($data['input_content']) ) {
		$error[] = 'お問い合わせ内容を入力してください';
	} else {

		if( MAX_CONTENT_LIMIT < mb_strlen($data['input_content']) ) {
			$error[] = 'お問い合わせ内容は'.MAX_CONTENT_LIMIT.'文字以内で入力してください。';
		}
	}

	return $error;
}


get_header();
?>

----- 省略 -----

フォームの入力チェックで使用しているif文は入力の有無を確認していますが、文字数の確認は入力があることを前提としたバリデーションです。
そのため、if文else文を追記して入力がある場合にのみ文字数を確認するようにします。

入力されたテキストの文字数はmb_strlen関数を使って取得します。
この関数は引数で渡した文字列の長さを数値で返してくれます。
取得した文字列の長さと先ほど作成した定数の数値をif文で比較し、文字数が上限をオーバーしていたらエラーのメッセージを$errorに追加します。

ここまでの変更を保存して、ブラウザでお問い合わせページを表示してみてください。
試しに名前を11文字以上で入力してみると、「名前は10文字以内で入力してください。」とメッセージが表示されるようになっていたら最大文字数のバリデーションが正しく実装できています。

次回はお問い合わせページで入力した内容をデータベースに保存する機能を実装していきます。

今回作成したコード:GitHub

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。

前のページへ 一覧に戻る 次のページへ