FAQ

Contact Form 7 の管理ページはどこにありますか?

WordPress にログインして お問い合わせ > コンタクトフォーム を開いてください。

Screenshot of Contact Form 7's Admin Screen

関連項目: 管理画面

投稿の内容にコンタクトフォームを追加するにはどうすればよいですか?

まず Contact Form 7 の管理ページを開きます。それから、追加したいコンタクトフォームを選んで開きます。

個々のコンタクトフォームには固有のタグ(ショートコード)があります(こんなの [contact-form-7 id="1234" title="Contact form 1"] )。投稿の内容にコンタクトフォームを挿入するには、このショートコードをコピーし、それを投稿の内容にペーストします。

Short code sample

コンタクトフォームが表示されません。代わりに [contact-form-7 404 "Not Found"] というコードが表示されます。

[contact-form-7 404 "Not Found"] というコードは、ショートコード(ひとつ前の回答を参照)で指定されたコンタクトフォームが見つからなかったことを示すサインです。正しいショートコードを使用しているか確認してください。

コンタクトフォームに項目を追加するにはどうすればよいですか?

項目を追加するには、フォーム入力欄にタグを追加します。

Form template sample

個々のタグには厳密な構文があり、いくつものオプションをサポートしています(タグの構文参照)。

タグの構文を覚えるのは大変ですが、代わりにタグジェネレータを使えばずっと簡単にカスタムタグを作れます。タグの作成をクリックしてお好みのオプションを選択するだけです。

フォームにタグを追加したのにメールには何も表示されません。どうすれば追加した項目の入力内容をメールに取り込めますか?

メールタブの項目にメールタグを追加する必要があります。これらのメールタグはフォームタブで使われているフォームタグと対応付いていなければなりません。例えば [text your-new-field] というフォームタグを使っているなら、これに対応してメールタブ内で使われるべきメールタグは [your-new-field] です。詳しくはタグの使い方を参照してください。

Mail template sample

メールタブのメールタグは対応付けられたフォーム入力項目へのユーザー入力により置き換えられます。

メールに [foobar] のような変なコードが入っているのですが、これは何ですか? 入れて欲しいのはユーザーの入力内容なんですが。

ひとつ前の回答を参照してください。この場合、メール欄にある [foobar] に対応するタグがフォーム欄にないためです。対応するタグがフォーム欄にないメール欄のタグは、置換されずにそのまま出力されてしまいます。

入力項目の名前に禁止語や予約語はありますか?

はい、いくつかの使用できない名前が存在します。ただしこれは Contact Form 7 の制約というよりむしろ WordPress の制約といえます。

WordPress のクエリーが使うパラメーターと同じ名前を持つ入力項目を送信すると、WordPress はそれらを混同してしまうでしょう。なのでその名前は使ってはいけません。

例えば、’name’ というのはクエリーで使われている名前なので、入力項目の名前に ‘name’ を使ってはいけません。使用できない名前を避ける最善策は、名前に接頭辞か接尾辞を付けることです。例えば、’name’ のかわりに ‘your-name’ や ‘name-1234’ を使うとよいでしょう。

関連項目: 送信完了後にいつも 404 のエラーページにリダイレクトされてしまいます。

メールの件名を指定することはできますか?

できます。メール欄の件名の項目を書き換えてください。

コンタクトフォームから送信されたメッセージを見ることはできますか?

Contact Form 7 は送信されたメッセージを保存しません。Contact Form 7 から送られたメッセージを管理するには、Flamingo (同じ作者による別のプラグイン) をインストールしてください。

自動返信メールは送れますか?

はい、もちろんです。フォームの設定画面で “メール (2) を使う” にチェックを入れてください。メール (2)メールとほぼ同じ機能ですが、メール (2)メールの送信に成功した場合に限って送信される点で異なります。

コンタクトフォームから届くメールの送信者名が「WordPress」になっています。どうすればこれを変更できますか?

送信者アドレスは送信者のメールアドレスと任意でつけられる送信者名で構成されます。送信者名が指定されなかった場合、WordPress は送信者名として「WordPress」を設定します。「WordPress」を送信者名に表示させたくない場合は、メール欄の差出人項目に、次の例のように送信者名を明示的に指定する必要があります:

Screenshot

投稿内容以外の場所にコンタクトフォームを配置することはできますか?

はい。投稿内容に置く場合と同じ方法で、サイドバーのテキストウィジェット内にもコンタクトフォームを設置できます。

テンプレートファイルにコンタクトフォームを埋め込むことはできますか?

はい。でも、コンタクトフォームのショートコードをテンプレートファイルに直接挿入することはできません。ショートコードを do_shortcode() 関数に引数として渡して、その出力を表示する必要があります。次のように:

<?php echo do_shortcode( '[contact-form-7 id="1234" title="Contact form 1"]' ); ?>

フォームを送信すると「メッセージの送信に失敗しました」というエラーメッセージが表示されます。何が悪いのですか?

2つのケースが考えられます。ひとつはメールサーバにおいて実際に問題が発生していて、そのためメールが送信できなかったケースです。この場合、エラーメッセージは赤色のボーダーラインで囲まれています。サーバー管理者に問い合わせてください。

もうひとつは、フォーム送信にスパムの疑いがあると判断されたケースです。この場合、エラーメッセージはオレンジのボーダーラインで囲まれています。

response message samples

関連項目

私の場合は赤いボーダーラインのエラーが出るのですが、どうすれば直せますか?

赤いボーダーラインは Contact Form 7 が wp_mail() を使ってメール送信を試みたものの失敗したことを示しています。この問題を解決するためにはまず失敗の原因を突き止める必要があります。

これには様々な原因が考えられ、例えばメールのセットアップが正しく行われていない場合です。

関連項目: WordPress 4.4.1 における赤枠エラー問題

メールサーバーがダウンしている、接続不能、またその他のトラブルに見舞われている場合にも、メール送信は失敗します。この場合は自分だけで問題を解決することがより難しくなるでしょう。ホスティングサービスのサポートに相談することをお勧めします。エラーログを確認して問題の原因を見つけてくれるかもしれません。

別のメールサーバーを使うことで問題を回避できる場合もあります。Postman SMTP 等のプラグインがその役に立つでしょう。

オレンジのボーダーラインのエラーが出ます。Akismet は使っていないのですが。

オレンジのボーダーラインはスパムのサインです。

以前はスパムフィルタリングを行う Akismet プラグインがこのオレンジボーダーの唯一の発生理由でしたが、現行のバージョンではそれ以外の理由でもこのオレンジボーダー付きのエラーメッセージが表示されるようになっています。

理由の一つにコメントブラックリストの使用があります。問題の見られるフォーム送信で使われている単語がコメントブラックリストにないか確認しましょう。

また、Contact Form 7 3.1 では nonce 検証がコンタクトフォームに導入されました。この検証に失敗した場合、Contact Form 7 は当該のフォーム送信をスパム行為と見なします。キャッシュを行うプラグインを同時に使用している場合に、これが誤検出を引き起こす可能性があります。古いキャッシュファイルが24時間以上長く残っていると、nonce 検証に失敗し、オレンジボーダーのエラーを見ることになるでしょう。

この問題を解決するには、キャッシュプラグインにて適切なガーベジコレクション(クリーンアップ)設定を行うようにしてください。キャッシュを頻繁に(24時間より短い間隔で)消去しましょう。設定方法はキャッシュプラグインごとに異なります。詳しくはキャッシュプラグインのドキュメントを参照してください。

「メッセージを送信しました」という緑色のボーダーラインつきのメッセージは表示されるのですが、そのメールが送られてきません。

緑色のボーダーラインのメッセージが表示されるということは、メール送信の PHP 関数は確かに成功して完了しているということを示しています。ですから、メールを受け取ることができないなら、そのメールがその後誘拐されたか、消されたかしている可能性が高いです。

もしメールサーバーのログを見ることができるなら、その中に手がかりを見つけられるかもしれません。スパムフィルターがこの手の問題の原因となることもよくあります。

関連項目: メールのセットアップに関するベストプラクティス

送信完了後にいつも 404 のエラーページにリダイレクトされてしまいます。

この問題はふたつの誤設定がくみ合わさって起こります。まず、AJAX の JavaScript が正しく機能していないことがひとつめの問題です。このためにあなたのコンタクトフォームは送信後に不必要なリダイレクトを発生します。もうひとつの問題は入力項目の名前に使用できない名前が使われていることです。これが WordPress を混乱させ、404 (“Not Found”) のエラーを発生させる結果になります。

フォームの送信後、回転する矢印のアイコンは現れるのですが、それっきりで何も起きません。

こういった問題はプラグイン間、またはテーマとの衝突が原因でよく起こります。試しに他のプラグインをすべて停止して、テーマをデフォルトテーマに戻してみてください。

プラグインやテーマとの衝突問題(このプラグインとだけでなく WordPress 全般でみられる)については Buzztone さんが詳しい説明を書いています。この問題の詳細が知りたいときには役に立つでしょう。

一部のブラウザ上でコンタクトフォームの動作がおかしくなります。

間違って書かれた HTML、CSS または Javascript がよくこの手の問題を引き起こします。バリデータまたはデバッグツールを使ってフォームのページをチェックしてみると原因が見つかるでしょう。

便利なツール:

コンタクトフォームを英語ではなく自国語で使いたいのですが。

Contact Form 7 は多くの言語に翻訳されています。languages フォルダにあなたの言語の言語ファイルがあるか確認してください。

Contact Form 7 のロケール設定は WordPress の設定に依存します。WordPress の設定を変更すると同時に Contact Form 7 も変わります。WordPress のロケール設定の方法はこちらを参照してください。

関連項目: コンタクトフォームを他の言語で使うには

CAPTCHA が機能しません。画像が表示されないのです。

CAPTCHA を使うためには GD と FreeType ライブラリがサーバにインストールされている必要があります。それから、Contact Form 7 で使用する CAPTCHA の一時ファイル保存フォルダを書き込み可能にしておいてください。詳しくは CAPTCHA を参照。

See also: Tips for troubleshooting Really Simple Captcha issues

CAPTCHA のテキスト入力項目が Internet Explorer では動くのに、Firefox では正しく機能しません。入力項目にコードを入力できません。

この現象は <label> 要素の誤使用が元でよく起こります。それらが正しく使われているか確認してください。

こちらは正しい使われ方です:

[captchac your-captcha]
<label>Enter the code: [captchar your-captcha]</label>

こちらは正しく動かないでしょう:

<label>[captchac your-captcha]
Enter the code: [captchar your-captcha]</label>

ファイルアップロード、ファイル添付が機能しません。

こちらの記事を参照してください。

ファイルのアップロードとメール添付

Contact Form 7 は HTML5 の入力タイプをサポートしますか?

はい。Contact Form 7 3.4 以上からこれらの HTML5 入力タイプに対応したフォームタグをサポートします: emailtelurlnumberrangedate

HTML5 の入力タイプを使いたくない場合は、次のコードをテーマの functions.php ファイルに追加することで無効化できます:

add_filter( 'wpcf7_support_html5', '__return_false' );

最新のブラウザでも HTML5 の全機能をサポートしているわけではないのでご注意ください。例えば最新の Firefox でも date 入力タイプ(カレンダーから日付をピックアップする UI)や number 入力タイプ(数値を入力するスピンボックス型 UI)をまだサポートしていないため、カレンダーやスピンボックスの UI の代替として一般的なテキスト入力フィールドを提供します。ユーザーにとってはどのような形式の入力値を入れたら良いのかわからず、混乱させてしまうかもしれません。だったらすべてのブラウザがすべての HTML5 の機能をサポートするまで待った方が賢明じゃないか、そのように考えてしまうかもしれません。

でも待つ必要はありません!Contact Form 7 にはもっとましな解決策があります。Contact Form 7 は datenumber 両入力フィールドのために jQuery UI ベースのフォールバック機能を提供することができます。これを利用することで、Firefox でも Internet Explorer でも、date フィールドにはカレンダーの UI を、number フィールドにはスピンボックスの UI を、それぞれ提供することができるようになります。

デフォルトではこのフォールバック機能は無効化されています。この機能は追加の JavaScript と CSS をロードしますし(パフォーマンス低下要因)、datenumber 入力フィールドを使わないウェブサイトではそもそも必要がないためです。もし datenumber の入力フィールドを使っていて、この jQuery UI ベースのフォールバック機能を使いたい場合は、次のコードをテーマの functions.php ファイルに追加して機能を有効化してください:

add_filter( 'wpcf7_support_html5_fallback', '__return_true' );

関連項目: 必要な場合だけ JavaScript とスタイルシートをロードさせるには

メールアドレス入力項目の見栄えが他のテキスト入力項目と違うのですがなぜですか?

HTML5 ではメールアドレス入力項目は <input type="email" /> と表現されるのに対し、通常のテキスト入力項目は <input type="text" /> と表現されます。このように ‘type’ 属性の値に違いがあります。

お使いのテーマの CSS スタイルシートの内容を精査すると、中に 属性セレクタ を使用している箇所が見つかると思います:

input[type="text"]
{
	...
}

この ‘input[type=”text”]’ というセレクタは、タイプが ‘text’ ではないメールアドレス入力項目にはマッチしません。このスタイルルールをメールアドレス項目にも適用させたい場合は、次のようにセレクタを追加します:

input[type="text"],
input[type="email"]
{
	...
}

関連項目: コンタクトフォームのスタイル指定

form 要素に id や class 属性を追加できますか?

はい。[contact-form-7] のショートコードに html_idhtml_class の属性を追加することで form に任意の id と class を追加できます。

例:

[contact-form-7 id="1234" title="Contact form 1" html_id="contact-form-1234" html_class="form contact-form"]

コンタクトフォームのデータをエクスポートやインポートすることはできますか?

Contact Form 7 はコンタクトフォームのデータをカスタム投稿 (投稿タイプ: wpcf7_contact_form) として保存するので、WordPress 管理画面のツール > エクスポートツール > インポートからそれらをエクスポート、インポートすることが可能です。

エクスポートのメニューでは「コンタクトフォーム」を選ぶとコンタクトフォームのデータだけをエクスポートできます。「すべてのコンテンツ」を選んでも構いません(この場合コンタクトフォームのデータも含まれます)。

入力フィールドにラベルを付けられますか?

はい。フォームテンプレートの中では任意の HTML マークアップを使うことができます。次のように label 要素を使ってみてください:

<label>
	Your Name
	[text* your-name]
</label>

ラベルとフォームタグを分離することもできます。この場合には、label 要素に for 属性を追加する必要があります。ここで for 属性の値は関連付けられるフォームタグの id オプションの値を参照します:

<label for="namefield">Your Name</label>

[text* your-name id:namefield]

チェックボックスやラジオボタンをラベル付けする場合には注意してください。label 要素に複数のフォーム構成要素を含めることはできません。

例えば、次のようにはできません(この [checkbox] が3つのチェックボックスに展開されるため):

<label>
	Your Country
	[checkbox your-country "China" "India" "San Marino"]
</label>

この場合は代わりに use_label_element を使います:

[checkbox your-country use_label_element "China" "India" "San Marino"]

Contact Form 7 のデフォルトのフォームテンプレートでは label 要素が使われていません。これは、以前は使われていたのですが、label 要素の使い方を間違えて理解してしまったユーザーからあまりにも多くの「バグレポート」が送られてきて収拾がつかなくなったので今の形になりました。

Contact Form 7: Accessible Defaults という別のプラグインを追加でインストールすることで label 要素を含んだデフォルトのフォームテンプレートが得られるようになります。

Just another contact form plugin for WordPress. Simple but flexible.