Contact Form 7から届くお問い合わせを管理したい。」
「お問い合わせに通し番号を自動付与したい。」

当記事では、そんな方向けにテーマ側の簡単なカスタマイズだけで通し番号を付ける方法をご紹介します。プラグインに頼らず、安心して導入できるやり方です。

初心者の方でもかんたんに導入できるよう、コピペで使えるコードを掲載していますので、ぜひ参考にしてください。

WordPressテーマ「PANDORA」
WordPressテーマ「PANDORA」
レイアウト自由自在なブログ・メディアを構築。

Contact Form 7の通し番号とは

通し番号とは、お問い合わせメールの管理番号のことで、整理券のような役割を担います。

当サイトに届いたお問い合わせメールの一例

このメールは「技術的なお問い合わせ」フォームから送信されたもので、自動的に「TEC-20250609001」といったフォーマットの通し番号が付与されています。

「TEC-」という接頭語(プレフィックス)によって、どのフォームから届いたかを件名から判断できるようにしているわけです。ただ、この通し番号機能は、Contact Form 7単体には備わっていないんですよね。

また、残念ながら、Serial Number for Contact Form 7Contact Form 7 Serial Numbersといった専用のプラグインもサポート・更新が停止しています(2025年6月確認時点)。

セキュリティや将来性を考えると導入は推奨できないので、この機能を安全かつシンプルに実装する方法を次の章でご紹介します。

お問い合わせに通し番号をつける方法

通し番号をつけるには、テーマのfunctions.phpに短いコードを追加するだけでOKです。Contact Form 7が送信されるたびに、自動的に連番を生成し、メールに差し込む仕組みを作ります。

ここでは、以下の環境を前提としたシンプルなコードを紹介します。

・WordPress 6.0以上
・PHP8系
・Contact Form 7 v5.9以上

初心者の方がテーマファイルを直接編集するのはリスキーなので、次のようなプラグインを使うのがおすすめです。

基本的な実装方法(PHP)

以下のコードをfunctions.phpにコピペしてください。

例として、年月日+3桁の数字(20250609-001)を通し番号とする設定にしています。運用しているフォームが1つだけの方は、これでも十分使えます。

// Contact Form 7 に日付付き連番を追加(全フォーム共通、接頭語なしの基本版)
add_filter('wpcf7_posted_data', function ($posted_data) {
    // 今日の日付(例:20250609)
    $date = date('Ymd');

    // オプションキーを固定化(フォーム共通で使用)
    $option_key = 'cf7_serial_global';

    // 連番を取得しインクリメント
    $count = intval(get_option($option_key, 0)) + 1;
    update_option($option_key, $count);

    // 日付+3桁連番(例:20250609-001)
    $serial_number = sprintf('%s-%03d', $date, $count);

    // 隠しフィールドにセット
    $posted_data['serial_number'] = $serial_number;

    return $posted_data;
});

フォーム側で必要な作業

上記で生成した通し番号を利用するには、Contact Form 7側で2つの作業が必要です。

隠しフィールドの追加

まずは、フォームテンプレート内に「隠しフィールド」を追加します。

今回は、隠しフィールド[hidden serial_number]を、以下のように[submit "送信"]の前に配置します。

[hidden serial_number]の配置場所

隠しフィールドなので実際のフォームには表示されませんが、内部処理上、そこに通し番号がないと正常に送信できません。

メールテンプレートにタグ追加

あとは、通し番号を表示したい箇所に[serial_number]タグを設置すればいいです。

メッセージ本文内に入れるなら、次のように設置するのも一つの例です。

[serial_number]タグの設置例

もちろん、お客様向けの自動返信メール本文にも挿入できます。お客様自身でも問い合わせ番号がわかると便利ですよね。管理・検索が効率化するので、両方のテンプレートに入れておくのがオススメです。

カスタマイズ

運用中のフォームが複数ある場合は、送信元フォームによって接頭語を変更すると管理しやすくなります。

たとえば弊社では、通し番号の前に次のような接頭語(プレフィックス)をつけています。

  • 購入前のお問い合わせ:ASK
  • 技術的なお問い合わせ:TEC
  • 事務的なお問い合わせ:GEN
  • ライセンスのお問い合わせ:LIC

フォームIDを判定して切り替えるカスタマイズを行っており、コードは以下の通りです。

// Contact Form 7 に日付付き連番を追加(フォームIDごとに接頭語を変える例)
add_filter('wpcf7_posted_data', function ($posted_data) {
    $form_id = isset($_POST['_wpcf7']) ? intval($_POST['_wpcf7']) : 0;

    // フォームID別の接頭語設定
    switch ($form_id) {
        case 123:
            $prefix = 'ASK';
            break;
        case 456:
            $prefix = 'TEC';
            break;
        case 789:
            $prefix = 'GEN';
            break;
        case 101112:
            $prefix = 'LIC';
            break;
        default:
            $prefix = ''; // プレフィックスなしも可
    }

    $date = date('Ymd');
    $option_key = 'cf7_serial_' . $form_id;

    $count = intval(get_option($option_key, 0)) + 1;
    update_option($option_key, $count);

    // 接頭語がある場合とない場合で出力フォーマットを変える
    if ($prefix !== '') {
        $serial_number = sprintf('%s-%s-%03d', $prefix, $date, $count);
    } else {
        $serial_number = sprintf('%s-%03d', $date, $count);
    }

    $posted_data['serial_number'] = $serial_number;

    return $posted_data;
});

上記は一例ですので、フォームのIDや接頭語は適宜変更してください。

フォームのIDは、WordPress管理画面 > お問い合わせ > コンタクトフォーム一覧で、タイトルにカーソルを合わせたときにブラウザの左下に表示されるリンク内に含まれています。

フォームIDの確認箇所

この番号がフォームのIDになりますので、上記コードのcaseの右側にコピペしてください。

これでフォームごとに接頭語が追加されるようになります。

今回の例では「購入前のお問い合わせフォーム」から届いたメールの通し番号は、「ASK-20250609-001」のように表示されます。

通し番号で管理をスマートに

Contact Form 7に通し番号をつける方法をご紹介しました。通し番号があれば、問い合わせの種類の判別や対応履歴の管理がしやすくなります。

プラグインに頼らず、テーマ側のシンプルなカスタマイズで実現できるので、初心者の方はもちろん上級者の方にもおすすめです。問い合わせ対応をスマート化するために、ぜひ導入してみてください。

実装コードまとめ

以下に、当記事でご紹介した「基本的な実装方法」と「カスタマイズ」をひとつに統合しています。「接頭語+年月日+数字3桁」の通し番号を4種のフォームごとに付与したい場合は、参考にご活用ください。

// Contact Form 7 に「日付付き通し番号」を追加(フォームID別の接頭語対応)
add_filter('wpcf7_posted_data', function ($posted_data) {
    // REST API/Ajax 経由で送信された場合のフォームIDを取得
    $form_id = isset($_POST['_wpcf7']) ? intval($_POST['_wpcf7']) : 0;

    // 接頭語をフォームIDに応じて切り替え
    switch ($form_id) {
        case 6564: // 購入前のお問い合わせ
            $prefix = 'ASK';
            break;
        case 456: // 技術的なお問い合わせ
            $prefix = 'TEC';
            break;
        case 789: // 事務的なお問い合わせ
            $prefix = 'GEN';
            break;
        case 101112: // ライセンスのお問い合わせ
            $prefix = 'LIC';
            break;
        default:
            $prefix = 'GEN'; // デフォルト
    }

    // 今日の日付
    $date = date('Ymd');

    // 共通のオプション名(全フォームで共通の通し番号)
    $option_key = 'cf7_serial_global';

    // 現在のカウントを取得・インクリメント
    $count = intval(get_option($option_key, 0)) + 1;
    update_option($option_key, $count);

    // 番号を整形:例 → ASK-20250609-001
    $serial_number = sprintf('%s-%s-%03d', $prefix, $date, $count);

    // hidden フィールドにセット
    $posted_data['serial_number'] = $serial_number;

    return $posted_data;
});
採用サイトが作成できる
WordPressテーマ

WordPressを使うとこんな採用サイトも低コストで自作できるようになります。

WordPressテーマ「ISSUE」
WordPressテーマ「ISSUE」
圧倒的なインパクトを残す採用サイト。
WordPressテーマ「MASSIVE」
WordPressテーマ「MASSIVE」
先進的な企業のための採用サイト。