Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Cherry Pie Web
100,119 views
Contact Form 7 よくあるカスタマイズ
WordBench京都 2013年1月13日 (2015年7月27日 Contact Form 7 の表記を正しく修正しました)
Technology
◦
Read more
77
Save
Share
Embed
Embed presentation
Download
Downloaded 183 times
1
/ 68
2
/ 68
3
/ 68
4
/ 68
5
/ 68
6
/ 68
7
/ 68
8
/ 68
9
/ 68
10
/ 68
11
/ 68
12
/ 68
13
/ 68
14
/ 68
15
/ 68
16
/ 68
17
/ 68
18
/ 68
19
/ 68
20
/ 68
21
/ 68
22
/ 68
23
/ 68
24
/ 68
25
/ 68
26
/ 68
27
/ 68
28
/ 68
29
/ 68
30
/ 68
31
/ 68
32
/ 68
33
/ 68
34
/ 68
35
/ 68
36
/ 68
37
/ 68
38
/ 68
39
/ 68
40
/ 68
41
/ 68
42
/ 68
43
/ 68
44
/ 68
45
/ 68
46
/ 68
47
/ 68
48
/ 68
49
/ 68
50
/ 68
51
/ 68
52
/ 68
53
/ 68
54
/ 68
55
/ 68
56
/ 68
57
/ 68
58
/ 68
59
/ 68
60
/ 68
61
/ 68
62
/ 68
63
/ 68
64
/ 68
65
/ 68
66
/ 68
67
/ 68
68
/ 68
More Related Content
PDF
AI と個人情報 ~AI 学習用データとしての個人情報と AI 処理対象としての個人情報~
by
Deep Learning Lab(ディープラーニング・ラボ)
PDF
ChatGPT の現状理解と 2023年7月版 LLM情報アップデート
by
Satoshi Kume
PDF
ユーザーデータ基盤を1からScalaでつくった話し
by
Hideaki Tarumi
PDF
ChatGPTは思ったほど賢くない
by
Carnot Inc.
PDF
[Cloud OnAir] BigQuery へデータを読み込む 2019年3月14日 放送
by
Google Cloud Platform - Japan
PDF
OpenSIM 筋骨格シミュレーション 基本の解析マニュアル
by
Yuki Koike
PPTX
プログラミング初心者がOpenCVと機械学習でOCRエンジン自作に挑戦する話
by
marika_hotani
PDF
UnityとROSの連携について
by
UnityTechnologiesJapan002
AI と個人情報 ~AI 学習用データとしての個人情報と AI 処理対象としての個人情報~
by
Deep Learning Lab(ディープラーニング・ラボ)
ChatGPT の現状理解と 2023年7月版 LLM情報アップデート
by
Satoshi Kume
ユーザーデータ基盤を1からScalaでつくった話し
by
Hideaki Tarumi
ChatGPTは思ったほど賢くない
by
Carnot Inc.
[Cloud OnAir] BigQuery へデータを読み込む 2019年3月14日 放送
by
Google Cloud Platform - Japan
OpenSIM 筋骨格シミュレーション 基本の解析マニュアル
by
Yuki Koike
プログラミング初心者がOpenCVと機械学習でOCRエンジン自作に挑戦する話
by
marika_hotani
UnityとROSの連携について
by
UnityTechnologiesJapan002
What's hot
PPTX
アンケートを即可視化!~MS Forms ⇒ MS Flow ⇒ Power BI~
by
Yugo Shimizu
PPTX
Stripeを使った簡単なサブスク型課金サービスの作り方【WESEEK Tech Conf #15】
by
WESEEKWESEEK
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
アジャイルにモデリングは必要か
by
Hiromasa Oka
PDF
人生がときめくAPIテスト自動化 with Karate
by
Takanori Suzuki
PDF
いまさら聞けないselectあれこれ
by
lestrrat
PPTX
Power BI を提案してみた件
by
Teruchika Yamada
PDF
レコメンドアルゴリズムの基本と周辺知識と実装方法
by
Takeshi Mikami
PDF
協調フィルタリング入門
by
hoxo_m
PPTX
Power bi勉強会 1202_小林
by
寿 小林
PPTX
[DL輪読会]Learning quadrupedal locomotion over challenging terrain
by
Deep Learning JP
PDF
Ansible tower 構築方法と使い方
by
Hiroshi Okano
PDF
データファブリック実現のためのプロジェクトの進め方とは
by
Denodo
PDF
IoT時代におけるストリームデータ処理と急成長の Apache Flink
by
Takanori Suzuki
PPTX
SQLチューニング入門 入門編
by
Miki Shimogai
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
by
shoma h
PPTX
物体検出フレームワークMMDetectionで快適な開発
by
Tatsuya Suzuki
PDF
Geotiff.jsで始めるリアルタイム演算 in foss4g japan 2020 online
by
Ryousuke Wayama
PDF
ヤフーを支えるデータセンタネットワーク
by
Yahoo!デベロッパーネットワーク
PDF
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
by
akio19937
アンケートを即可視化!~MS Forms ⇒ MS Flow ⇒ Power BI~
by
Yugo Shimizu
Stripeを使った簡単なサブスク型課金サービスの作り方【WESEEK Tech Conf #15】
by
WESEEKWESEEK
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
アジャイルにモデリングは必要か
by
Hiromasa Oka
人生がときめくAPIテスト自動化 with Karate
by
Takanori Suzuki
いまさら聞けないselectあれこれ
by
lestrrat
Power BI を提案してみた件
by
Teruchika Yamada
レコメンドアルゴリズムの基本と周辺知識と実装方法
by
Takeshi Mikami
協調フィルタリング入門
by
hoxo_m
Power bi勉強会 1202_小林
by
寿 小林
[DL輪読会]Learning quadrupedal locomotion over challenging terrain
by
Deep Learning JP
Ansible tower 構築方法と使い方
by
Hiroshi Okano
データファブリック実現のためのプロジェクトの進め方とは
by
Denodo
IoT時代におけるストリームデータ処理と急成長の Apache Flink
by
Takanori Suzuki
SQLチューニング入門 入門編
by
Miki Shimogai
次世代言語 Python による PyPy を使った次世代の処理系開発
by
shoma h
物体検出フレームワークMMDetectionで快適な開発
by
Tatsuya Suzuki
Geotiff.jsで始めるリアルタイム演算 in foss4g japan 2020 online
by
Ryousuke Wayama
ヤフーを支えるデータセンタネットワーク
by
Yahoo!デベロッパーネットワーク
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
by
akio19937
Similar to Contact Form 7 よくあるカスタマイズ
PDF
愛と涙のWordPress無理やりカスタマイズ事例集
by
Hidekazu Ishikawa
PDF
Trust form (お問い合わせフォームプラグイン)について
by
Seto Takahiro
PDF
Hokuriku.NET ASP.NET MVC 入門 2 回目 1.編集機能を実装
by
miso- soup3
PDF
メールフォーム&CRMプラグイン特集
by
Yuki Kokubo
PDF
Ajax
by
Jun Chiba
PPT
CakePHPで開発する時に統一しておきたいコーディング内容(080316)
by
柴田 篤志
PPT
メールフォームを作る
by
だいすけ ふるかわ
KEY
Prejob wordpress v2_1121
by
Shohei Aoyama
KEY
Prejob wordpress v2_1121
by
Shohei Aoyama
PDF
RYUS通信2012年1月号
by
株式会社RYUS
PPTX
お問い合わせフォームを設置
by
Tatsuya Iwama
KEY
twitter4contact #twtr_hack
by
Masashi Arino
PPTX
form
by
sayoko miura
PDF
アプリケーションプラットホームとしてのWordPress
by
Takayuki Miyauchi
PDF
Form
by
sayoko miura
愛と涙のWordPress無理やりカスタマイズ事例集
by
Hidekazu Ishikawa
Trust form (お問い合わせフォームプラグイン)について
by
Seto Takahiro
Hokuriku.NET ASP.NET MVC 入門 2 回目 1.編集機能を実装
by
miso- soup3
メールフォーム&CRMプラグイン特集
by
Yuki Kokubo
Ajax
by
Jun Chiba
CakePHPで開発する時に統一しておきたいコーディング内容(080316)
by
柴田 篤志
メールフォームを作る
by
だいすけ ふるかわ
Prejob wordpress v2_1121
by
Shohei Aoyama
Prejob wordpress v2_1121
by
Shohei Aoyama
RYUS通信2012年1月号
by
株式会社RYUS
お問い合わせフォームを設置
by
Tatsuya Iwama
twitter4contact #twtr_hack
by
Masashi Arino
form
by
sayoko miura
アプリケーションプラットホームとしてのWordPress
by
Takayuki Miyauchi
Form
by
sayoko miura
More from Cherry Pie Web
PDF
.htaccessによるリダイレクト徹底解説
by
Cherry Pie Web
PDF
Adobe Illustratorによる WordPressテーマ作成ワークフロー
by
Cherry Pie Web
PDF
concrete5を使って分かった、WordPressのいいところ
by
Cherry Pie Web
PDF
TwentyTwelveの子テーマつくったらハマった話
by
Cherry Pie Web
PDF
熊本地震支援サイトを30分で立ち上げ即日運用開始した話
by
Cherry Pie Web
PDF
WordPressのサーバー間引っ越しのツボ
by
Cherry Pie Web
PDF
南実業会Webサイト開設について
by
Cherry Pie Web
PDF
「フォントはしゃべる」というお話
by
Cherry Pie Web
PDF
お客様のための管理画面カスタマイズ
by
Cherry Pie Web
PDF
熊本地震支援Webサイトの実例紹介と支援のためのホームページを作りたい人に絶対知っていてほしいこと
by
Cherry Pie Web
.htaccessによるリダイレクト徹底解説
by
Cherry Pie Web
Adobe Illustratorによる WordPressテーマ作成ワークフロー
by
Cherry Pie Web
concrete5を使って分かった、WordPressのいいところ
by
Cherry Pie Web
TwentyTwelveの子テーマつくったらハマった話
by
Cherry Pie Web
熊本地震支援サイトを30分で立ち上げ即日運用開始した話
by
Cherry Pie Web
WordPressのサーバー間引っ越しのツボ
by
Cherry Pie Web
南実業会Webサイト開設について
by
Cherry Pie Web
「フォントはしゃべる」というお話
by
Cherry Pie Web
お客様のための管理画面カスタマイズ
by
Cherry Pie Web
熊本地震支援Webサイトの実例紹介と支援のためのホームページを作りたい人に絶対知っていてほしいこと
by
Cherry Pie Web
Recently uploaded
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PPTX
ddevについて .
by
iPride Co., Ltd.
PDF
Drupal Recipes 解説 .
by
iPride Co., Ltd.
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PDF
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
by
法林浩之
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
ddevについて .
by
iPride Co., Ltd.
Drupal Recipes 解説 .
by
iPride Co., Ltd.
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
by
法林浩之
Contact Form 7 よくあるカスタマイズ
1.
2013/01/13 WordBench京都 Cherry Pie Web
川井昌彦 Contact Form 7の よくあるカスタマイズ
2.
2 自己紹介 ●川井昌彦(かわいまさひこ) @sakuragi_kei 東京の制作会社で24年間勤めた後、 京都府舞鶴市に帰郷してフリーランスで活動中 実は、DTPのほうが経験が長い (このスライドも InDesign
で作っています) 実は、MovableTypeのほうが経験が長い 小桜インコ・シロハラインコ・黒い柴犬のパパ Cherry Pie Web http://www.cherrypieweb.com
3.
3 Contact Form 7
について
4.
4 Contact Form 7とは? WordPressに 「メールフォーム」を追加するプラグイン 一から作ると、プログラミングが必要で めんどくさい「メールフォーム」を、 管理画面の設定だけで作成できます
5.
5 メールフォームの流れ チェック、送信部分は、HTMLだけでは作れない 入力 • Formタグ、 Inputタグなどで 構成 • HTMLのみで 作れる チェック •
入力値の チェック • プログラミング が必要 送信 • メール本文構築、 メールサーバー との通信 • プログラミング が必要
6.
6 チェックは面倒だけどおろそかにできない! • セッション管理 • 不正なタグやコマンドを入力された場合の対処 • メール送信失敗時の対処 • もちろん、 必須チェック、 メールアドレスチェック、 確認用入力の整合チェック ・・・なんかも必要です
7.
7 でもContact Form 7なら プログラミング不要! 難しそうなところは全部やってくれます プログラミングとか、できなくても大丈夫 メールサーバーとか気にしなくてもOK (気にしないといけないこともあるけど・・・)
8.
8 本日のメニュー ≫ よくあるカスタマイズ ●公式サイトを見ればすぐにできること 1. 自動返信メールを送信する 2. 送信日時などをメールに挿入する 3. フォームのデフォルト値を設定する・透かし文字を入れる 4. Google Analyticsで送信完了イベントを取得する ●公式サイトを読めば書いてあるけど、わかりにくいこと 1. セレクトメニュー・ラジオボタン・チェックボックスで、 表示文字と送信される値を異なる値にする 2. テキストフィールドへ値を渡す
9.
9 ●公式サイトには書いてないこと(非推奨なものあり) 1. IME(日本語入力)の自動切り替えをする 2. 送信ボタンを画像にする 3. 郵便番号入力で住所を自動入力する 4. メールアドレス入力時に、確認用メールアドレスを入れて整合チェックをする 5. 送信完了画面を表示する 6. 確認画面を表示する ≫ トラブルシューティング 1. メールフォームから大量のスパムメールが送られてくる 2. メールが届かない 3. 送信ボタンを連打される
10.
10 Contact Form 7 よくあるカスタマイズ
11.
11 自動返信メールを送信する メール(2)を使う あて先のところに、メールアドレス入力フォームの名前を 指定すればOKです [your-email] とかです。 書いてある
12.
12 送信日時などをメールに挿入する 特別なメールタグを使う (例) [_date] 送信日付 [_time] 送信時刻 [_remote_ip] 送信者のIPアドレス [_post_title] メールフォームのある投稿のタイトル 書いてないわかりにくい書いてある
13.
13 フォームのデフォルト値を設定する たとえば、こんな感じ 書いてある
14.
14 ⑴テキスト で囲んでデフォルト値を指定します [text
text1 デフォルト値] watermarkオプション → 透かし文字になります [text text2 watermark 入力の説明]
15.
15 ⑵チェックボックス・ラジオボタン defaultオプションで、何個目かを指定します チェックボックスは、複数指定できます ラジオボタンは、複数指定できません [checkbox your-check2 default:2_4
a b c d e]
16.
16 ⑶セレクトメニュー defaultオプションで、何個目かを指定します 複数指定したいときは multipleオプションをつけます [select your-select1
multiple default:2_4 a b c d e] 初期値を空にするときは、 include_blankオプションをつけます [select your-select2 include_blank a b c d e] (注意)表示は「…」ですが、 送信される値は null になります!
17.
17 セレクトメニュー・ラジオボタン・ チェックボックスで、表示文字と 送信される値を異なる値にする 値を | で区切る [select
your-select option1|value1 option2|value2 option3|value3] 書き出されるHTMLは、 | より前の文字になっていますが、 メールに埋め込まれる値は、 | より後の文字になります ※送信される値は送信時にプラグインが置き換えるので、 ユーザーに知られることがありません。 わかりにくい
18.
18 テキストフィールドへ値を渡す フォームへGETパラメータで渡す 1. フォームで値を渡したい部分に名前をつけます pお名前 (必須)br / [text*
your-name] /p p題名br / [text your-subject] /p 2. フォームへのリンクに GETパラメーターを仕込みます a href=/wp/?page_id=nyourname=名前subject=題名フォームへ/a (フォームとパラメータの名前は違うものにしたほうが、後でデバッグしやすいです) わかりにくい
19.
19 3. functions.php に、 フォームの内容に応じて下記のように記述します function my_tag_filter($tag){ if
( ! is_array( $tag ) ) return $tag; if(isset($_GET['yourname'])){ $name = $tag['name']; ←ここは変えちゃダメ! if($name == 'your-name') $tag['values'] = (array) $_GET['yourname']; } if(isset($_GET['subject'])){ $name = $tag['name']; if($name == 'your-subject') $tag['values'] = (array) $_GET['subject']; } return $tag; } add_filter('wpcf7_form_tag', 'my_tag_filter', 11);
20.
20 しかし! これだと、IEで日本語のパラメータが 文字化けしてしまいます!! → フォームへのリンクで、urlencode関数を使います a href=/wp/?page_id=xxx yourname=?php
echo urlencode('名前'); ? subject=?php echo urlencode('題名'); ?フォームへ/a (読みやすいように改行しています)
21.
21 投稿やページに入れる時はショートコードを使います functions.php でショートコードを定義 function urlencode_text_shortcode($attr)
{ extract(shortcode_atts(array( 'val' = '', ), $attr)); return urlencode($val); } add_shortcode('urlencode_text', 'urlencode_text_shortcode'); 投稿やページでは、 a href=/wp/?page_id=xxx yourname=[urlencode_text val='名前'] subject=[urlencode_text val='題名']フォームへ/a 他のブラウザだと問題がみつからないので、 IEでのテストは必ずやりましょう!
22.
22 IME(日本語入力)の 自動切り替えをする フォーム設定画面でタグにclassを指定し、 CSSでIMEのモードを指定する 1. フォームでclass指定します pお名前br / [text
your-name class:name] /p pメールアドレスbr / [email your-email class:email] /p pメッセージ本文br / [textarea your-message class:message] /p 書いてない
23.
23 2. style.cssでIMEのモードを指定します form.wpcf7-form .email
{ ime-mode: inactive; ←IME OFF } form.wpcf7-form .name, form.wpcf7-form .message { ime-mode: active; ←IME ON }
24.
24 送信ボタンを画像にする ⑴ CSSで画像にする フォーム指定時に、送信ボタンにclassをつけます [submit class:imgsubmit] style.cssで背景画像として設定します input.imgsubmit
{ border: none; width: 100px; ←画像の幅 height: 30px; ←画像の高さ background: url(送信ボタンの画像のURL) left top no-repeat; text-indent: -9999px; ←ボタンのテキストを非表示にする } (読みやすいように改行しています) 書いてない書いてない
25.
25 ⑵自前の送信ボタンにする input type=image value=送信
src=ボタン画像のURL class=wpcf7-form-control wpcf7-submit / (読みやすいように改行しています) ・ボタン画像のURLは、絶対URLか、ルートディレクトリからのパス ・class=wpcf7-form-control wpcf7-submit をつけないと、 メール送信時にローディング画像が表示されません マウスオーバーさせたいなら、こんな感じです input type=image value=送信 class=wpcf7-form-control src=通常のボタン画像のURL onmouseover=this.src='マウスオーバー時のボタン画像のURL' onmouseout=this.src='通常のボタン画像のURL' class=wpcf7-form-control wpcf7-submit / (読みやすいように改行しています)
26.
26 郵便番号入力で 住所を自動入力する Ajaxzip3 を組み込む (簡単なJavaScriptを組みます) 書いてない書いてない
27.
27 1. Contact Form 7
のフォームに id を設定します p郵便番号br / [text zip1] - [text zip2 id:zip]/p p住所br / [text address] /p 2. フォームに onKeyupイベントを追加するため、 JavaScriptを作成します (テーマディレクトリ)/js/jquery.wpcf7.ajaxzip3.js $(function(){ $(#zip).keyup(function(event){ AjaxZip3.zip2addr(zip1,zip2,address,address); }) }) ※AjaxZip3の書式 AjaxZip3.zip2addr(〒上3桁, 〒下4桁, 都道府県, 市区町村, 町域大字, 丁目番地 );
28.
28 3. functions.php で読み込みます function cf7_ajaxzip3()
{ wp_enqueue_script( 'ajaxzip3', 'http://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3.js', array('jquery')); wp_enqueue_script( 'wpcf7-ajaxzip3', get_stylesheet_directory_uri().'/js/jquery.wpcf7.ajaxzip3.js', array('ajaxzip3')); } add_action('wp_print_scripts', 'cf7_ajaxzip3'); (読みやすいように改行しています) wp_enqueue_script を使うと、 bodyの閉じタグの直前にスクリプトが出力されます。
29.
29 ※jQueryは、読み込み直しましょう。 WordPressにはjQueryが組み込まれていますが、noConfrictが含められていて、関 数をカプセル化しないと使えない仕様になっていて使いづらいです。 また、下記の形で読み込んだほうが、一般的に高速で動作します。 function load_cdn() {
if ( !is_admin() ) { wp_deregister_script('jquery'); wp_enqueue_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', array(), '1.7.2' ); } } add_action('init', 'load_cdn'); (jQueryのバージョンは、新しいものに置き換えていただいても良いと思います)
30.
30 メールアドレス入力時に、 確認用メールアドレスを入れて 整合チェックをする フィルターフックに チェックプログラムをひっかける Contact Form 7で 確認用メールアドレスの入力フォームを加える方法 http://hello.lumiere-couleur.com/smilkobuta/2010/12/02/contact-form-7%E3% 81%A7%E7%A2%BA%E8%AA%8D%E7%94%A8%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%8 3%89%E3%83%AC%E3%82%B9%E3%81%AE%E5%85%A5%E5%8A%9B%E3%83%95%E3%82%A9%E3%83% BC%E3%83%A0%E3%82%92%E5%8A%A0/ 書いてない
31.
31 1. フォームに確認用のタグを追加します pメールアドレスbr / [email* your-email]
/p pメールアドレス (確認用)br / [email* your-email_confirm] /p 確認用メールアドレスの名前は、 メールアドレスの名前に、 _confirm を付け足したものになります
32.
32 2. functions.phpに以下を書きます (参考サイトに載っているコードの丸写しでOK) ?php add_filter( 'wpcf7_validate_email', 'wpcf7_text_validation_filter_extend',
11, 2 ); add_filter( 'wpcf7_validate_email*', 'wpcf7_text_validation_filter_extend', 11, 2 ); function wpcf7_text_validation_filter_extend( $result, $tag ) { $type = $tag['type']; $name = $tag['name']; $_POST[$name] = trim( strtr( (string) $_POST[$name], n, ) ); if ( 'email' == $type || 'email*' == $type ) { if (preg_match('/(.*)_confirm$/', $name, $matches)){ $target_name = $matches[1]; if ($_POST[$name] != $_POST[$target_name]) { $result['valid'] = false; $result['reason'][$name] = '確認用のメールアドレスが一致していません'; } } } return $result; } ?
33.
33 送信完了画面を表示する もし、クライアントから「送信完了画面を作ってください」と 言われたら・・・ まず、 「何のために必要なんですか?」 と聞いてください
34.
34 そしてもし、 「Google Analyticsで フォーム送信をトラッキングしたいから」 と言われても・・・ (つまり、「送信完了ページへの移動」を 「フォーム送信完了」としたいということ)
35.
35 「そのために、 送信完了画面を作る必要は あ り ま せ ん !」
36.
36 Google Analyticsで 送信完了イベントを取得する方法 _trackPageviewを使う ●フォーム送信を Google
Analytics でトラッキングする http://contactform7.com/ja/tracking-form-submissions-with-google-analytics/ (注意) 上記のページに書いてある方法は「同期式」トラッキングコード使用時のものですが、 最近はほとんど「非同期式」です。 非同期式の場合の説明もあるのですが、わかりづらいので注意してください。 書いてある
37.
37 管理画面のフォーム設定ページの一番下に「その他の設 定」の項目があるので、そこに以下の行を挿入します on_sent_ok: _gaq.push(['_trackPageview', 'complete.html']); ※書式 _gaq.push(['_trackPageview',
'仮想ページ名']); 仮想ページ名は、実際に存在しなくても構いません。 ページへのリンクとして認識されるので、 目標値(コンバージョン)に設定できます。 _trackEventを使って、フォーム送信をイベントとしてとらえることもできます。 イベントも目標値として設定できるらしいです。 また、仮想ページを目標値にすると、ウェブマスターツールでクロールエラーが記録され ることがあるらしい(検索パフォーマンスには影響がない)です。
38.
38 話が脱線したので、元に戻します・・・ では、Google Analyticsのトラッキングが目的でない場 合は・・・? たとえば、 「完了メッセージが下の方に出るので、気づきにくい」 「送信完了後に、メールフォームが残ってたらカッコ悪い」 「違うページへのリンクや、バナーを表示したい」 なんてときです。
39.
39 ⑴送信完了後、完了ページへ飛ばす 1. 固定ページなどで完了ページを作ります 2. フォーム設定の「その他の設定」に、下記のように記述し ます on_sent_ok: location =
'完了ページのURL'; 先ほど出てきた「on_sent_ok」は、送信完了後に、 そのあとに記述したJavaScriptを実行します
40.
40 ⑵CSSでなんとかする 実は、さきほどのようなことなら、CSSでなんとかなります
41.
41 ●送信完了後、フォーム部分を非表示にして メッセージだけ表示する 1. フォーム設定画面で、全体をdivタグで囲みます div class=form-wrapper pお名前br / [text
your-name]/p pメールアドレスbr / [email your-mail]/p p[submit 送信] /div 2. style.cssに下記のように記述します .sent .form-wrapper { display: none; } フォームが送信されると、Contact Form 7プラグインによって、 formタグに .sentというクラスがつけられるので、 送信完了後にdivで囲んだ部分が非表示になります
42.
42 ●送信完了後、別のテキストや画像を表示する (さきほどの応用です) 1. フォーム設定画面で、全体をdivタグで囲みます さらに、送信後に表示したいものを、divで囲んで記述します pお名前br / [text your-name]/p pメールアドレスbr
/ [email your-mail]/p p[submit 送信] div class=complete-display pこちらのページもご覧くださいbr / a href=/hoge.htmlimg src=/img/sample.jpg/a/p /div 2. style.cssに下記のように記述します .wpcf7-form .complete-display { display: none; } .wpcf7-form.sent .complete-display { display: block; }
43.
43 ●メッセージの表示位置を変える 1. フォーム設定画面で、メッセージを表示したい位置に [response] を記述します [response] pお名前br
/ [text your-name]/p pメールアドレスbr / [email your-mail]/p p[submit 送信] div class=complete-display pこちらのページもご覧くださいbr / a href=/hoge.htmlimg src=/img/sample.jpg/a/p /div これだと、フォームよりもメッセージが上に表示されます
44.
44 確認画面を表示する Contact Form 7の作者は、 確認画面は「いらないもの」というお考えらしいです・・・ http://ja.forums.wordpress.org/topic/648 で、いろいろググってみたけれど、 プラグインなど、 管理画面だけで解決する方法は見当たりません 書いてない
45.
45 JavaScriptで、送信ボタンを押す前に 確認フェーズを「割り込ませる」 ●wordpressのcontact form 7で確認画面を出す 手軽なライブラリ http://aulta.jp/library/wordpress/contactForm7Confirm.html JavaScriptをアップロードして、設定部分を修正し、 header.php
とかで読み込ませるだけ これなら、なんとかできそうかも?
46.
46 1. フォームに class=title をつけます 囲まれた部分がタイトルとして認識され、エラー表示の時に使われます 送信ボタンは、任意のクラスで囲みます pspan
class=title本文/spanbr / [text your-text] /p pspan class=titleメールアドレス/spanbr / [email* your-mail] /p pspan class=titleメールアドレス(確認用)/spanbr / [email* your-mail_confirm] /p p class=submit-btninput type=image value=送信 src=/wp/wp- content/themes/wbkyoto2013_1/img/btn_submit.jpg class=wpcf7-form- control wpcf7-submit //p
47.
47 2. ダウンロードしたファイルを解凍し、JSファイルを開き、設定をフォームに合わせて書 き換えます path : フォームがある投稿/ページのパス(カンマで区切って複数可) button
: areaClassName : 送信ボタンを囲ったクラス confirm : 確認ボタンのHTML rewrite : 戻るボタンのHTML 'path' : ['/wp/inquiry/'], 'button' : { 'areaClassName' : 'submit-btn', 'confirm' : 'input class=button-confirm type=button value=確認へ /', 'rewrite' : 'input class=button-rewrite type=button value=書き直す /' } フォームによってボタンを変えたいときは、このブロックを複製してください ※投稿の場合、パーマリンク設定が「投稿名」でないと動作しません ( '/wp/?p=1' と指定しても動作しない)
48.
48 (送信ボタンを画像にした場合) CSSで送信ボタンを画像にした場合は、styles.css に指定を追加します .submit-btn input
{ border: none; width: 100px; ←画像の幅 height: 30px; ←画像の高さ background: url(送信ボタンの画像のURL) left top no-repeat; text-indent: -9999px; ←ボタンのテキストを非表示にする } .submit-btn input.button-confirm { /* 確認ボタン */ background: url(確認ボタンの画像のURL) left top no-repeat; } .submit-btn input.button-rewrite { /* 戻るボタン */ background: url(戻るボタンの画像のURL) left top no-repeat; }
49.
49 送信ボタンを、input type=image ...で画像にした場合は、 スクリプト冒頭の設定で、「確認」ボタン、「戻る」ボタンを、 input
type=image ...で指定します 'button' : { 'areaClassName' : 'submit-btn', 'confirm' : 'input class=button-confirm type=image src=/wp/wp- content/themes/wbkyoto2013_1/img/btn_confirm.jpg value=確認へ /', 'rewrite' : 'input class=button-rewrite type=image src=/wp/wp- content/themes/wbkyoto2013_1/img/btn_back.jpg value=書き直す /'
50.
50 3. ダウンロードしたCSSファイルと、先ほど修正したjSファイルをアップロードします (テーマディレクトリの下に、jsディレクトリを作ってアップするのがおすすめ) 4. CSSファイルとJSファイルを、テンプレートで読み込みます (page.php, single.php など) ?php wp_enqueue_script('wpcf7-confirm',
get_stylesheet_directory_uri().'/js/ contact-form7-confirm.js', array('jquery'), '0.0.1'); wp_enqueue_style( 'wpcf7-confirm-style', get_stylesheet_directory_uri() ().'/js/contact-form7-confirm.css', array('twentytwelve-style') ); ? ?php get_header(); ?
51.
51 と・こ・ろ・が・・・ 「確認用メールアドレスの整合チェック」 と組み合わせると、 確認画面では、 確認用メールアドレスが違っていてもエラーが出ず、 確認画面で送信ボタンを押した後で、 「確認用メールアドレスが合っていない」 というエラーが出る・・・
52.
52 確認画面で、エラーを出したいので、 「確認用メールアドレスの整合チェック」を さきほどのスクリプトに組み込みます (JavaScript初心者だと、ちょっと難しいかも)
53.
53 1. 冒頭の設定部分に、確認用メールアドレスチェック時の エラーメッセージを追加します email : {
match : /^[A-Za-z0-9]+[w-]+@[w.-]+.w{2,}$/, before : '', after : 'を確認してください。' }, email_confirm : { before : '', after : 'が合っていません。' } 直前の } の後に、カンマを追加するのを忘れないように!
54.
54 2. メールアドレスの形式をチェックする部分を探し、 その続きに追加で、 「確認用メールアドレス整合チェック」を組み込みます if (child.hasClass('wpcf7-text')){ if
(child.hasClass('wpcf7-validates-as-required') child.val(). length == 0){ error.append(jQuery('li').text(option.validates.required.before + title.replace('必須', '') + option.validates.required.after)); jQuery(this).parents('tr').addClass('error'); } else if (child.hasClass('wpcf7-validates-as-email') ( ! child. val().match(option.validates.email.match))){ error.append(jQuery('li').text(option.validates.email.before + title.replace('必須', '') + option.validates.email.after)); jQuery(this).parents('tr').addClass('error'); (この続きに・・・)
55.
55 } else
if (child.hasClass('wpcf7-validates-as-email')) { var email_conf_name = 'span.'+child.attr('name')+'_confirm input'; if ( jQuery(email_conf_name)[0] ) { if (jQuery.trim( child.val()) != jQuery.trim(jQuery(email_conf_name).val())) { error.append(jQuery('li').text(option.validates.email.before + title.replace('必須', '') + option.validates.email_confirm.after)); jQuery(this).parents('tr').addClass('error'); } } } 【解説】 子要素に class=wpcf7-validates-as-email をもつ要素のname属性を取得し、 それに _confirm を追加したname属性を持つ要素を探します 見つかった場合、それぞれの値を比較し、異なっていればエラーメッセージを設定します この作業をした場合は、functions.php への追加記述は不要です
56.
56 Contact Form 7 トラブルシューティング
57.
57 メールフォームから 大量のスパムメールが送られてくる ●主な対策 1. CAPTHA (標準機能) 2. クイズ (標準機能) 3. Akismet (標準対応) 4. Honeypot (追加プラグイン) ←おすすめ!
58.
58 ⑴CAPTHA 画像で表示された文字を入力させる ⑵クイズ クイズを用意して、答えを入力させる 上記の2つは・・・ ・効果が高い ・Contact Form 7標準で使える ・ユーザーに面倒を強いる(利用率が非常に落ちる)
59.
59 ⑶Akismet 公開されているブラックリストを使用して、スパムかどうか を判断する • Akismetプラグインは、WordPressに入っている • Contact Form 7では、簡単な設定で使える • 営利目的のサイトは有償(5ドル/月)
60.
60 ⑷Honeypot ←おすすめ! スパムメール自動送信システムの動作を、逆に利用したス パム対策 スパムメール自動送信システムは、全てのフィールドに何か しらの入力を行うようになっている そこで、非表示のダミーフィールドを作って、 そこに何か入力されていたら、メールを送信しない 「Contact Form 7
Honeypot」プラグイン
61.
61 メールが届かない! まずは、Contact Form 7のFAQを読んで、設定ミスが ないか確認しましょう PHPの動作モードによって、対策をしないと動かないこと があります それでも、メールが届かない場合・・・ または、一部にだけメールが届かない場合・・・ (Gmailには届くのに、さくらには届かないとか)
62.
62 送信メールサーバーが スパム扱いされているかも!? Amazon EC2などでよくあるケース DNS逆引き設定がされていない IPアドレスがブラックリストに登録されている など 自分が悪いことしていなくても、ブラックリストに登録され てしまうことはあります サーバー管理者に言えば対応してくれますが、 Amazonやブラックリスト管理団体とは、 英語でのメールのやりとりが必要です
63.
63 クライアントからのメールは届くのに、 WordPressからは届かない場合 同じドメインなのに、WordPressからだけ届かない! 1. 送信側のメールサーバーがブラックリストに登録されて いても、受信側のメールサーバーがそのブラックリスト を使っていなければ、メールが届きます 2. Webサーバーとメールサーバーが違うかも (Google Appsを使っている場合など) →いずれにせよ、WordPressで対策が必要です
64.
64 WordPressで使う メールサーバーを指定する 強制的に他のメールサーバーを指定するプラグイン ・WP Mail SMTP ・Cimy
Swift SMTP 設定項目が多少違うが、普通に使う分にはどちらでもOK メーラーソフトに設定するのと同じような項目を設定する ことで、他のサーバーからメールを送ることができる
65.
65 送信ボタンを連打される Contact Form 7で作成したフォームは、 送信ボタンを連打すると二重送信されてしまいます ●JavaScriptで防止します jQueryでsubmit(送信)ボタンの2度押しを禁止する 「disableDoubleSubmit」プラグイン ※WordPressのプラグインではありません!
66.
66 1. スクリプト jquery.disableDoubleSubmit.js をダウンロードします 2. 新規に下記のJavaScriptファイルを作成し、適当な名前を付けて保存します (例として、disableDoubleSubmit_init.js
という名前を付けて保存します) (function() { $(function(){ $(form).disableDoubleSubmit(1000); }); })(jQuery); form と指定すると、全てのformタグに対して有効になります form#mailform1 などと、idを指定することもできます 1000 は、再度送信ボタンが押せるようになるまでの時間(ミリ秒)です サーバーが遅くて送信処理に時間がかかるときは、長く設定してください 3. 上記の2ファイルをテーマディレクトリのjsディレクトリにアップロードします (テーマディレクトリの下に、jsディレクトリを作ってアップするのがおすすめ)
67.
67 4. functions.php で読み込みます function cf7_disableDoubleSubmit()
{ wp_enqueue_script('disableDoubleSubmit', get_stylesheet_directory_uri().'/js/jquery.disableDoubleSubmit.js', array('jquery')); wp_enqueue_script('disableDoubleSubmit_init', get_stylesheet_directory_uri().'/js/disableDoubleSubmit_init.js', array('disableDoubleSubmit')); } add_action('wp_print_scripts', 'cf7_disableDoubleSubmit'); (読みやすいように改行しています)
68.
68 今日は、このへんで、おしまいです。 ご清聴ありがとうございました。
Download