*

【WordPress】Contact Form 7の追加プラグイン「Contact Form 7 DatePicker」便利だけど手動入力されたときにエラー吐いちゃうのの対策



便利なプラグインContact Form 7の追加プラグイン「Contact Form 7 DatePicker」


過去に紹介したWordPressで簡単にお問い合わせフォームが実装できる有名プラグインContact Form 7。

◆過去記事
【WordPress】Contact Form 7で送信できないからWP-Mail-SMTPで対策!でもgoogle appsのsmtpの設定がわからない人のためだけの記事

それの追加プラグインでContact Form 7 DatePickerってやつがあります。

百聞は一見にしかず。実際に実装したのがこれです。

一番上の「希望日」ってところをクリックして見てください。


必須希望日

必須お名前

必須メールアドレス

必須お問い合わせ内容



※内容は送信されません。


日付の選択でカレンダーが表示されないでしょうか?

これがこの「Contact Form 7 DatePicker」の機能です。

jQuery UIのDatepickerをWordPressのContact Form 7に簡単に実装できるということで非常に人気です。

jQuery UIですのでUI(ユーザーインターフェイス)的に非常に向上(使いやすくなる)し、ユーザーにとっても嬉しいのはもちろんのこと。

管理者としても、多くのお問い合わせフォームのデータベース化についても入力フォーマットが統一され、非常に勝手が良いです。


  • 2014年7月23日
  • 2014/7/23
  • 平成26年7月23日
  • 2014-7-23
  • 7/23
  • 7月23日

なんていう風にそれぞれバラバラな形式だと、管理や検索が面倒ですし、これに数字の全角半角などが混ざると発狂ものです(#・∀・)

というわけで非常に便利なのですが。。。



入力文字の不正チェックで手動入力されるとエラーを吐く


もう一度フォームを下記に貼りました。

そこで「希望日」の欄をクリックすると同じくカレンダーが出てきますがそれを無視して適当に

あああ

とか入れてみて、次に送信してみてください。


必須希望日

必須お名前

必須メールアドレス

必須お問い合わせ内容



すると赤文字で

Invalid date supplied.

ってのが希望日の入力フィールドの下に出ましたでしょうか?

※日本語にすると無効な日付が入力されました。って意味でこれは「Contact Form 7 DatePicker」のデフォルトのエラーメッセージです。設定で後から変更可能です。

これはつまりカレンダーが表示されるので基本的にはそれを選択してもらうのでこういったことは起こらないのですが。

もし万が一手動で入力した文字が違うフォーマットで入力された場合、さっきの管理者から見た管理や検索しやすさ的によろしくないので、エラーを出すといった仕組みです。

ちなみに手動入力でもカレンダー選択と同じ形式で入力された場合は、エラーは出ません。

当然これはこれで便利な機能であります。

しかし、良く考えてみてください。





カレンダー出てるのにあえて手動入力するのはなにか理由が?


そう勘ぐりますよね?

で、具体的に僕が仕事で管理してたフォームでよく起こっていたのが、以下のように入力したら送信出来ない!というのでした。


  • 7月の第一週
  • 7,8月の週末
  • 7/25-30のどれか1日
  • 今年度中
  • 未定

などです。まあ当然起こり得ますよね。

これらを入力すると、全てエラーで送信出来ません。

なんとかならんもんかいな?と考えまして。

で、出した結論が、管理や検索しやすさ的に入力形式は揃うのが望ましいが、

そもそもカレンダー表示されるので多くの場合形式は揃う

日程が複数あったり流動的だったり未定な人が送信出来ないのは意味が無い

であれば、あえて入力形式によるフィルターは不要ではないのか?うん、そうだ!


ということでした。

なので、「Contact Form 7 DatePicker」で行われるこの日付入力形式のフィルターを解除してやろうと思い実際にしました。

ただし、設定項目にこれらが見当たらなかったので、プラグインのコードを少しいじってやることで解決しました。

少しというか本当にちょっとだけです。




「Contact Form 7 DatePicker」の日付入力形式フィルターを解除


まず、いじるファイルはWordPressのルート(WordPressをインストしたところ)から

wp-content/plugins/contact-form-7-datepicker/modules/

まで進むと、


  • date.php
  • datetime.php
  • time.php


この3つのファイルがあるかと思います。

これらは「Contact Form 7 DatePicker」で選択可能な入力形式で、それぞれこんな感じです。


必須date

必須datetime

必須time




で、それぞれ自分が使っているものをいじってください。

一番ベタなdateであれば「date.php」といった具合です。

今回も「date.php」を基準に説明します。


まずは、「date.php」の冒頭部分を転記します。



<?php

class ContactForm7Datepicker_Date {

	static $inline_js = array();

	public static function register() {
		// Register shortcodes
        add_action('wpcf7_init', array(__CLASS__, 'add_shortcodes'));

		remove_filter('wpcf7_validate_date', 'wpcf7_date_validation_filter', 10);
		remove_filter('wpcf7_validate_date*', 'wpcf7_date_validation_filter', 10);
		remove_filter('wpcf7_messages', 'wpcf7_date_messages');
		remove_action('admin_init', 'wpcf7_add_tag_generator_date', 19);

		// Validations
		add_filter('wpcf7_validate_date', array(__CLASS__, 'validation_filter'), 10, 2);
		add_filter('wpcf7_validate_date*', array(__CLASS__, 'validation_filter'), 10, 2);
・
・
・


こちらでいじるのは、これで言うと16行目の

// Validations

以降の

add_filter(‘wpcf7_validate_date’, array(__CLASS__, ‘validation_filter’), 10, 2);
add_filter(‘wpcf7_validate_date*’, array(__CLASS__, ‘validation_filter’), 10, 2);


この2行です。

datetime.phpやtime.phpでも10数行目と比較的早めに出てきます。

そしてこの2行がそれぞれ

【time】
add_filter(‘wpcf7_validate_time‘, array(__CLASS__, ‘validation_filter’), 10, 2);
add_filter(‘wpcf7_validate_time*‘, array(__CLASS__, ‘validation_filter’), 10, 2);


【datetime】
add_filter(‘wpcf7_validate_datetime‘, array(__CLASS__, ‘validation_filter’), 10, 2);
add_filter(‘wpcf7_validate_datetime*‘, array(__CLASS__, ‘validation_filter’), 10, 2);



となってます。

で、ズバリこの2行が日付入力形式フィルターですので、これらを消す(わかりやすくコメントアウト)してあげれば完成です。

偉そうにソースをいじるとか言ってましたが超カンタンでしょ?

コメントアウトは文頭に「//」です。ネットスラングの照れじゃないよ。

やだ、恥ずかしいそんなの///


冗談はさておき、これで完成!



<?php

class ContactForm7Datepicker_Date {

	static $inline_js = array();

	public static function register() {
		// Register shortcodes
        add_action('wpcf7_init', array(__CLASS__, 'add_shortcodes'));

		remove_filter('wpcf7_validate_date', 'wpcf7_date_validation_filter', 10);
		remove_filter('wpcf7_validate_date*', 'wpcf7_date_validation_filter', 10);
		remove_filter('wpcf7_messages', 'wpcf7_date_messages');
		remove_action('admin_init', 'wpcf7_add_tag_generator_date', 19);

		// Validations
		//add_filter('wpcf7_validate_date', array(__CLASS__, 'validation_filter'), 10, 2);
		//add_filter('wpcf7_validate_date*', array(__CLASS__, 'validation_filter'), 10, 2);
・
・
・




一点注意としては、これは「Contact Form 7 DatePicker」の本体を直接いじっているので、「Contact Form 7 DatePicker」のアプデが行われた時はこのファイルが上書きされることになると思われます。

なので、アプデの度に、この2行のコメントアウトをするか、なんか自分で外部ファイル化するなりしなきゃですけど、まあ今日は疲れたので、これにて。

バーイセンキュー!

タイタイタイツマン 黒


WordPress レッスンブック 3.x対応
エビスコム
ソシム
売り上げランキング: 10,460
























関連記事

RapidSSLをさくらインターネット専用サーバ(CentOS5)セットアップおよび更新覚書

タイトルそのまんま。 丁度sslの更新だったんですが、今回記憶を辿るのが大変でした。 次

記事を読む

【PHP】メールフォーム 一度入力した内容が消えてしまう時 POST使って入力内容を保持 ~メールフォームパッケージダウンロードあり~

前に、 【PHP】スマホ対応 メールフォーム設置 PEARを使ってgmailのsmtpサーバで

記事を読む

起業するときにおすすめのサービス【PCFAXでペーパーレス】 02

前回のやつ 前回の流れから、ミニマムに商売をはじめるためのおすすめのサービスの紹介です。

記事を読む

美女Linuxのブログパーツをこのブログに入れた。そんだけ。。。

このブログもいろいろ寂しいので、少しでも華やかにしようかなと思いまして。。。 美女Li

記事を読む

愛車 エブリー

20年戦士のオンボロ愛車をパワーアップ(スズキ・エブリーにカーステ取り付け)

ボクの愛車「スズキ・エブリー」です。 ボロいでしょ? エアコンも無くて、窓もパワ

記事を読む

google Analytics(グーグルアナリティクス)で、自分を除外したいけど、スマホだとIP変わっちゃうよ(>_<)ってときの対処方

タイトルそのまんま。 google Analytics(グーグルアナリティクス)で、自分を除外

記事を読む

【結婚式二次会のゲームなどにおすすめ】めくりフリップ 自作 手作り 作り方 材料 で検索にひっかかれ!!

先日友達の結婚式の二次会の幹事をやりました。 その中でゲームの中でめくりフリップあった方がいい

記事を読む

BUFFALO(バッファロー)製のNAS「LS410D0201」の純正バックアップ機能だと履歴管理バックアップが出来ないから、ネットブックにAcronis製「True Image」をインストして自前バックアップシステムを作ったなう

タイトル長すぎてうざくて死んで欲しいと思いますが。。。 ネットブックをN君から貰った話の続きと

記事を読む

【PHP】曜日と時間を検出して、いつまでに対応するかを表示する

営業時間中であれば、お問合わせいただいてから何分以内に対応しますよという文句を自動で表示したい。

記事を読む

追尾メニューのAdSense削除の件

このサイトへのお問い合わせで、以下のような内容のご指摘を頂きました。 サイドメニューの追尾広告

記事を読む

Message

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

  • 高橋拓郎(31歳)
    愛知県知多市生まれ。
    大学在学中に個人で始めた事業を、大学院中退後法人化(法人化のために中退が正しいかも)。
    簡単にコンタクトとれるのでt@takuro.infoまで何か御用があればなんなりと。
    ブログの感想やご意見も大歓迎です!
【ユーザー車検】軽トラを無料でGETしたけど車検代が無いから初の軽自動車ユーザー車検に挑戦!

青春カーと悲しい別れ どうも。貧乏が板に付いてきて久しい僕で

【LINEbot】LINEbotが作れるからphpで作ってみたの巻 ~さくらの共有SSLでも動くよ~

BOT API Trial Accountってのが、公開されたので、L

【電気自動車】日産リーフの無料モニターに当選して2週間使ってみたけれども。。。結論的に購入は時期尚早??

どうも。実写版とってもラッキーマンこと僕です! とっても!ラッキ

追尾メニューのAdSense削除の件

このサイトへのお問い合わせで、以下のような内容のご指摘を頂きました。

【Chromebook】ASUS製 Flip C100PA-RK3288 タッチパネル/10.1インチ 開封の儀

こんな自分の物欲の言い訳のためだけの記事を書いてですね。 「いま

→もっと見る

PAGE TOP ↑