この記事でわかること
- WordPressのプラグイン Contact Form 7 (CF7) で、送信ごとに「秒までの日時」を自動採番してメールに付与する方法。
functions.php
に数行のコードを追記するだけでOK。- Contact Form 7でお問い合わせフォームを運用していると、『連番や日時を付与した管理番号を自動生成したい
なぜ「秒までの日時」を付与するのか?
- お問い合わせ番号を一意にしたい
- 連番の管理が不要(00001 → 00002 …のように+1する必要がない)
- 実装がシンプル(日時を出すだけなので衝突が起きにくい)
結果として、運用コストを下げつつ、利用者・管理者双方にわかりやすい受付番号を付けられます。
実装方法(最短ショートコード版)
WordPressテーマの functions.php
に以下を追記します。
// CF7で送信時の日時(YYYYMMDDHHMMSS)を返すショートコード
function cq_cf7_datetime_code() {
// WordPressのタイムゾーン設定に従って出力
return date_i18n('YmdHis');
}
add_shortcode('serial_datetime', 'cq_cf7_datetime_code');
CF7メールテンプレートでの使い方
お問い合わせ番号: [serial_datetime]
出力例
20250901192345
特殊メールタグ版([_datetime14])で使う方法
プレビュー展開ではなく、CF7の「特殊メールタグ」として使いたい場合はこちらがおすすめです。
// 特殊メールタグ: [_datetime14] → YYYYMMDDHHMMSS
add_filter('wpcf7_special_mail_tags', function ($output, $name) {
$name = preg_replace('/^wpcf7\./', '', $name);
if ($name === '_datetime14') {
return date_i18n('YmdHis');
}
return $output;
}, 10, 2);
メールテンプレートでの書き方
お問い合わせ番号: [_datetime14]
カスタマイズ例(フォーマット変更)
/
や:
を使いたい場合:
date_i18n('Y/m/d H:i:s'); // 出力例: 2025/09/01 19:23:45
接頭辞・接尾辞を追加したい場合:
'CQ-' . date_i18n('YmdHis') . '-JP'; // 出力例: CQ-20250901192345-JP
🔧 カスタマイズ・応用
1. 出力フォーマットのバリエーション
YYYY/MM/DD-HH:MM:SS
形式CQ-20250901192345-JP
のように接頭辞・接尾辞つき- タイムゾーンを UTC / JST 切り替え可能に
2. 一意性の担保
date_i18n('YmdHis') . '-' . uniqid()
microtime(true)
を使ってミリ秒精度で出力wp_generate_uuid4()
を組み合わせて「UUID+日時」形式にする
3. 管理画面カスタマイズ
- 「お問い合わせ一覧」に日時IDカラムを追加
- メール送信時の日時IDを カスタムフィールド に保存して検索可能に
4. 自動リセットや桁数指定
- 例えば「毎日リセットして
0001
から始めたい」ケース - 5桁固定の
str_pad()
を応用して桁数を増やす
5. 他プラグインとの連携
- Flamingo に保存されるメッセージに日時IDを一緒に保存
- WooCommerce の注文番号風に「CF7注文番号」を出力する
よくある質問(FAQ)
Q. 日本時間で出力されますか?
A. はい。date_i18n()
を利用しているため、WordPressの一般設定に従います。
Q. 同じ秒に複数件送信されたら?
A. その場合は同じ値になる可能性があります。より厳密に一意性を確保したい場合は、uniqid()
を追加する方法もあります。
Q. 件名にも利用できますか?
A. 利用可能です。件名欄に お問い合わせ番号: [_datetime14]
と書けばOKです。
まとめ
- Contact Form 7 で「秒までの日時」をメールに付与する方法は ショートコード版と特殊メールタグ版の2パターン。
- 連番の+1は不要で、常に「YYYYMMDDHHMMSS」の日時を出すだけのシンプル実装。
- お問い合わせ番号として利用すれば、管理がしやすくい。