【Contact Form 7】メール件名に送信日時の受付番号を追加する方法|プラグイン不要

Contact Form 7 でお問い合わせフォームを作っていると、

  • メール件名や本文に、注文番号や受付番号っぽい文字列を入れたい
  • 標準の[_date][_time] 使用だと日本語表記になって扱いづらい
  • できればプラグイン追加なしで済ませたい

という場面がありますよね。

私も実際のクライアント案件で、メール件名に「受付番号を付けたい」という要望があり、最初はプラグインも探しました。ですが、更新が止まっているものもあり、実案件にそのまま入れるにはちょっと不安でした。

そこで、Contact Form 7 の特殊メールタグを1つ追加して対応したところ、希望どおりの形式で運用できました。

結論からいうと、functions.php にカスタムコードを追加して [_serial] という特殊メールタグを作れば、件名や本文に日時ベースの受付番号を差し込めます。

この記事では、プラグイン不要で Contact Form 7 のメール件名に日時ベースの受付番号を入れる方法を、実際に使ったコードつきでご紹介します。

先に結論

今回やることはシンプルで、流れは次の2ステップです。

  1. Contact Form 7 のメールテンプレートに [_serial] を入れる
  2. functions.php[_serial] を独自の特殊メールタグとして定義する

これで、たとえば件名を次のようにできます。

[20260420153045] お問い合わせが入りました

英数字のみで扱いやすく、コピペもしやすいので、受付番号っぽく使いたい時に便利です。

注意点:あくまで送信日次ベースの受付番号です

一点だけ大事なのは、これは厳密な意味での「通し番号」ではなく、送信日時ベースの受付番号だということです。

本当に 1, 2, 3… と増えていく連番が必要なら、Contact Form 7 公式の特殊メールタグ [_serial_number] を使う方法もあります。こちらは Flamingo 1.5 以上が必要 です。

こんな時に向いています

  • 受付メールの件名を見ただけで送信タイミングを判別したい
  • クライアントに「受付番号っぽい文字列を付けたい」と言われた
  • まずは軽く実装したいので、プラグインを増やしたくない

逆に、次のような場合は日時ベースではなく別案を検討したほうが安心です。

  • 同じ秒に複数送信される可能性がある
  • 重複しない厳密な採番が必要
  • 注文管理や業務システムの正式な受付番号として使いたい

その場合は 前項の注意点として説明させていただいた、[_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]

「見やすさ優先」か「短さ優先」かで調整すると良いかと思います!

このコードだけで動く?追加の件名カスタマイズは必要?

調べていると、wpcf7_mail_components というフィルターを使って、件名をさらに置換している実装例を見かけることがあります。

ただ、今回の用途なら 特殊メールタグ [_serial] を追加するだけで十分 です。
Contact Form 7 の特殊メールタグは、本文だけでなく件名などメールタグが使える場所で利用できます。

そのため、まずはシンプルに wpcf7_special_mail_tags だけで組むほうが分かりやすく、保守もしやすくおすすめです。

うまく動かない時の確認ポイント

時間がズレた時は、WordPress のタイムゾーン設定を確認する

今回のコードは wp_date() を使っているため、WordPress 側のタイムゾーン設定に沿って日時が出力されます。

管理画面の

設定 → 一般 → タイムゾーン

が意図した設定になっているか確認してみてください。

「時間がズレる」と感じる時は、まずここを見るのが早いです!

動かなくなった?!テーマ更新で消えたくないなら子テーマへ

親テーマの functions.php に直接書くと、テーマ更新で消える可能性があります。
「正常に動かなくなった?!」「管理番号が送信されなくなった?!」と思ったらまずは、上書き更新で本記事のコードが消えてしまっていないか確認してみてください。

そういった事故防止のため、案件サイトなら子テーマの functions.php で管理するのが安心です。

「送信日時ベースの番号」より「厳密な連番」が必要な場合は

今回紹介の内容は日時ベースの番号ですが、前述した通りこれは厳密な意味での通し番号ではありません
同じ秒に送信が重なれば、同一値になる可能性があります。

そのため、もし要件が、

  • 同じ日時・秒数に送られてくるフォームを使用する場合
  • 1件ごとに絶対重複しない厳密な通し番号が必要な場合

なら、日時ベースだけで済ませず、[_serial_number] や保存機構込みの方法を検討したほうが安全です。

まとめ

Contact Form 7 でメール件名に受付番号っぽい文字列を付けたいなら、functions.php[_serial] という特殊メールタグを追加する方法が手軽です。

特に、

  • プラグインを増やしたくない
  • 件名を見ただけで送信日時を判別したい
  • 英数字だけの短い識別子を付けたい

という用途なら、かなり使いやすいと思います。

Contact Form 7 は「ちょっとした要望」が意外と標準機能だけでは届かないことがあるのですが、こういうケースは特殊メールタグを足すときれいに解決しやすいです。

同じく CF7 をカスタムしている方は、あわせて確認画面まわりや注文フォーム系の記事も読むと実装の幅が広がると思います!

ContactForm7関連記事

【2026年版・コピペOK】ContactForm7の生年月日プルダウンを動的生成&年齢自動計算する方法 【2026年版・コピペOK】ContactForm7で土日祝日・特定日付を選択不可にするDatepicker実装 【2026年版・コピペOK】ContactForm7で郵便番号から住所を自動入力する方法(function.php方式) 【2026年版プラグイン不要】Contact Form 7に確認画面をつける方法|カスタムJSで軽量実装【コピペOK】 【プラグイン不要】複数商品に対応の簡易注文フォーム(金額合算機能付き)ContactForm7+カスタム投稿タイプ 【2026年版・コピペOK】ContactForm7にクリック・URLリンクから値を渡す方法|セミナー予約フォームに便利

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA