Contact Form 7 でお問い合わせフォームを作っていると、
- メール件名や本文に、注文番号や受付番号っぽい文字列を入れたい
- 標準の
[_date]や[_time]使用だと日本語表記になって扱いづらい - できればプラグイン追加なしで済ませたい
という場面がありますよね。
私も実際のクライアント案件で、メール件名に「受付番号を付けたい」という要望があり、最初はプラグインも探しました。ですが、更新が止まっているものもあり、実案件にそのまま入れるにはちょっと不安でした。
そこで、Contact Form 7 の特殊メールタグを1つ追加して対応したところ、希望どおりの形式で運用できました。
結論からいうと、functions.php にカスタムコードを追加して [_serial] という特殊メールタグを作れば、件名や本文に日時ベースの受付番号を差し込めます。
この記事では、プラグイン不要で Contact Form 7 のメール件名に日時ベースの受付番号を入れる方法を、実際に使ったコードつきでご紹介します。
先に結論

今回やることはシンプルで、流れは次の2ステップです。
- Contact Form 7 のメールテンプレートに
[_serial]を入れる functions.phpで[_serial]を独自の特殊メールタグとして定義する
これで、たとえば件名を次のようにできます。
[20260420153045] お問い合わせが入りました英数字のみで扱いやすく、コピペもしやすいので、受付番号っぽく使いたい時に便利です。
こんな時に向いています

- 受付メールの件名を見ただけで送信タイミングを判別したい
- クライアントに「受付番号っぽい文字列を付けたい」と言われた
- まずは軽く実装したいので、プラグインを増やしたくない
逆に、次のような場合は日時ベースではなく別案を検討したほうが安心です。
- 同じ秒に複数送信される可能性がある
- 重複しない厳密な採番が必要
- 注文管理や業務システムの正式な受付番号として使いたい
その場合は 前項の注意点として説明させていただいた、[_serial_number] + Flamingo、または別途データ保存込みの設計にしたほうが向いています。

私が対応した案件では「正式な管理番号」ではなく、「受信メールを見分けやすくしたい」という目的だったので日時ベースで十分でした。このへん、要件を一番最初に切り分けるのがかなり大事です!
Contact Form 7 標準の [_date] [_time] では足りない理由
Contact Form 7 には、もともと標準で日時を表示するための [_date] や [_time] という特殊メールタグがあります。
ただ、この2つは WordPress 側の日時フォーマット設定に従って出力されるため、案件によっては次のような点が少し扱いづらいです。
- 「◯年◯月◯日」という日本語表記になってしまい管理番号ぽく見えにくい
- 日付と時刻をひとまとめにした固定書式にしづらい
そのため、「管理番号ぽく見えやすい、送信日時ベースの[20260420153045] のような形で付けたい」という要望を叶えるためには、本記事で紹介する内容がフィットします。
実装方法
1. まずはメールテンプレートに [_serial] を入れる
Contact Form 7 の管理画面で対象フォームを開き、「メール」タブの件名に [_serial] を入れます。
[_serial] お問い合わせが入りました本文に入れたい場合は、メール本文側でも使えます。
問い合わせ番号:[_serial]コンタクトフォーム側で通し番号を表示させたいところに下記を記載します。

2. functions.php にコードを追加する
次に、テーマの functions.php に以下のコードを追加します。
子テーマを使っているなら、子テーマ側へ入れるのがおすすめです。
/**
* Contact Form 7 用の特殊メールタグ [_serial] を追加
* 例: [20260420153045]
*/
add_filter( 'wpcf7_special_mail_tags', 'pdo_add_cf7_serial_mail_tag', 10, 3 );
function pdo_add_cf7_serial_mail_tag( $output, $name, $html ) {
if ( '_serial' !== $name ) {
return $output;
}
return '[' . wp_date( 'YmdHis' ) . ']';
}これで [_serial] を書いた場所に、WordPress のタイムゾーン設定に基づいた日時が YmdHis 形式で入ります。
[20260420153045]フォーマットの意味は次のとおりです。
Y:年4桁m:月2桁d:日2桁H:24時間表記の時i:分2桁s:秒2桁
今回のように、重複しにくくしたいなら 秒まで含める YmdHis にしておくほうが無難です。
たとえば秒はいらない場合は、YmdHis を YmdHi に変えればOKです。
return '[' . wp_date( 'YmdHi' ) . ']';ハイフンを入れたいなら、こんな形にもできます。
return '[' . wp_date( 'Ymd-His' ) . ']';出力例:
[20260420-153045]「見やすさ優先」か「短さ優先」かで調整すると良いかと思います!
うまく動かない時の確認ポイント
時間がズレた時は、WordPress のタイムゾーン設定を確認する
今回のコードは wp_date() を使っているため、WordPress 側のタイムゾーン設定に沿って日時が出力されます。
管理画面の
設定 → 一般 → タイムゾーン
が意図した設定になっているか確認してみてください。

「時間がズレる」と感じる時は、まずここを見るのが早いです!
動かなくなった?!テーマ更新で消えたくないなら子テーマへ
親テーマの functions.php に直接書くと、テーマ更新で消える可能性があります。
「正常に動かなくなった?!」「管理番号が送信されなくなった?!」と思ったらまずは、上書き更新で本記事のコードが消えてしまっていないか確認してみてください。
そういった事故防止のため、案件サイトなら子テーマの functions.php で管理するのが安心です。
「送信日時ベースの番号」より「厳密な連番」が必要な場合は
今回紹介の内容は日時ベースの番号ですが、前述した通りこれは厳密な意味での通し番号ではありません。
同じ秒に送信が重なれば、同一値になる可能性があります。
そのため、もし要件が、
- 同じ日時・秒数に送られてくるフォームを使用する場合
- 1件ごとに絶対重複しない厳密な通し番号が必要な場合
なら、日時ベースだけで済ませず、[_serial_number] や保存機構込みの方法を検討したほうが安全です。
まとめ
Contact Form 7 でメール件名に受付番号っぽい文字列を付けたいなら、functions.php で [_serial] という特殊メールタグを追加する方法が手軽です。
特に、
- プラグインを増やしたくない
- 件名を見ただけで送信日時を判別したい
- 英数字だけの短い識別子を付けたい
という用途なら、かなり使いやすいと思います。
Contact Form 7 は「ちょっとした要望」が意外と標準機能だけでは届かないことがあるのですが、こういうケースは特殊メールタグを足すときれいに解決しやすいです。
同じく CF7 をカスタムしている方は、あわせて確認画面まわりや注文フォーム系の記事も読むと実装の幅が広がると思います!
