「あのお問い合わせの件ですが…」 クライアントから電話がかかってきた際、大量のメールの中から該当する1通を探し出すのに苦労したことはありませんか?
WordPressの定番プラグイン「Contact Form 7」は非常に便利ですが、デフォルトのままでは運用フェーズで「情報の特定」に時間がかかるという課題があります。
この記事では、Contact Form 7の自動返信メール、管理者メールにお問い合わせ日時とお問い合わせ番号の自動生成を導入することで、お問い合わせ管理業務の効率化と信頼性の向上を図る手法を提案しています。「運用時にどう使われるか」エンジニアのフォーム制作を支援する内容となっています。
実装できること:
お問い合わせ日時: 2026-03-20-10:30 AM
お問い合わせ番号: INQ-20260320-103050
お問い合わせ日時
Contact Form 7の設定画面にある「メール」タブ、および自動返信メールの設定である「メール(2)」の本文に、以下のタグを設置するだけでお問い合わせ日時が取得できます。
- [_date]: 送信日(YYYY-MM-DD)を表示
- [_time]: 送信時間(HH:MM)を表示
※ 先頭にアンダーバー “_” を入れた[_date]、[_time]です。
設定例:
お問い合わせ日時: [_date]-[_time]
実際に届くメールには、以下のように表示されます。
お問い合わせ日時: 2026-03-20-10:30 AM
これだけで、管理者がメールを一覧で見た際、あるいは印刷して管理する際に、「いつ届いたものか」が判別可能になります。これは対応漏れを防ぐための、最もシンプルで強力な第一歩になります。
お問い合わせ番号
functions.phpに専用のフィルターフックを記述することで、サーバー時刻に基づく正確なお問い合わせ番号(カスタムタグ [inquiry-number])を実装可能です。お問い合わせフォーム送信時点のタイムスタンプから(出力例: INQ-20260320-120030)動的に重複しない管理番号を生成します。
- [inquiry-number]
- Contact Form 7が提供する wpcf7_special_mail_tags フィルターを利用する
- WordPress標準関数の wp_date(‘Ymd-His’) を使用する
WordPress標準関数の wp_date(‘Ymd-His’) を使用することで、ユーザーの端末環境に依存せず、WordPressの一般設定で定義されたタイムゾーンに準拠した正確な日時をサーバー側で取得できます。
なぜJavaScriptではなくPHP(functions.php)なのか?
Contact Form 7のフォームタブのフォームに隠しフィールド([hidden inquiry-number]など)を配置し、JavaScriptを用いて番号を生成する方法もありますが、フロントエンド側での生成はユーザー環境(端末の日時設定)に依存するため、時間がズレるリスクがあります。業務システムとしての信頼性を担保するため、この記事ではサーバー側の時刻を基準とするfunctions.phpの編集での実装アプローチを採用しています。
- ご使用中のテーマ(または子テーマ)のfunctions.phpの末尾に、以下のPHPコードを追記してください。
/**
* Contact Form 7 カスタムメールタグ [inquiry-number] の追加
* 出力形式: INQ-20260320-103050 (INQ-年月日-時分秒)
*/
add_filter( 'wpcf7_special_mail_tags', 'custom_cf7_inquiry_number_tag', 10, 3 );
function custom_cf7_inquiry_number_tag( $output, $name, $html ) {
// 呼び出されたタグが 'inquiry-number' の場合のみ処理を実行
if ( 'inquiry-number' === $name ) {
// WordPressのタイムゾーン設定に基づいた現在日時を取得
// Y:4桁年, m:月, d:日, H:24時間, i:分, s:秒
$output = 'INQ-' . wp_date( 'Ymd-His' );
}
return $output;
}
2. Contact Form 7の設定画面にある「メール」タブ、および自動返信メールの設定である「メール(2)」の件名や本文の出力したい箇所にカスタムタグを設置します。
設定例:
お問い合わせ番号: [inquiry-number]
実際に届くメールには、以下のように表示されます。
お問い合わせ番号: INQ-20260320-103050
このような管理番号があることで、ユーザーから後日電話やメールで再問い合わせがあった際も「お問い合わせ番号INQ〜番の件ですね。ただいま詳細を確認いたします。」とスムーズに行えるようになります。
まとめ
実装例:
件名:【自動返信】【お問い合わせ番号:[inquiry-number]】お問い合わせありがとうございます
本文:
[your-name]様
お問い合わせいただき誠にありがとうございます。
以下の内容でお問い合わせを受け付けました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【お問い合わせ内容】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
お問い合わせ日時: [_date]-[_time]
お問い合わせ番号:[inquiry-number]
[お名前]: [your-name]
[会社名]: [your-company]
[メールアドレス]: [your-email]
[お問い合わせ内容]:
[your-message]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【お問い合わせ番号について】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
お問い合わせ番号 [inquiry-number] は、お問い合わせ内容を
照会する際に使用します。お問い合わせの際にお伝えください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
今回ご紹介したカスタマイズは、コード量としてはわずか数行です。しかし、この「たった数行」が、クライアントの業務効率を劇的に変えます。
- 対応の迅速化: 「INQ〜番の件ですね」と即座に会話を始められる。
- ミスの防止: 似たような内容の問い合わせも、お問い合わせ番号で確実に区別できる。
- 運用の安心感: 運用のことまで考え抜かれた設計は、クライアントからの信頼に直結する。
エンジニアの仕事は、お問い合わせフォームを作って終わりではありません。「運用時にどう使われるか」を想像し、先回りして利便性を仕込む。そんな「痒いところに手が届く」提案のひとつとして、ぜひこの「お問い合わせ日時」と「お問い合わせ番号」の生成を活用してみてください。