Contact Form 7に通し番号、タイムスタンプをつけるプラグインの使用方法と改修してさらに使いやすくする(1)

Contact Form 7のメールフォームで送信されたメールの本文や件名に、通し番号(連番)かタイムスタンプを追記できる「Contact Form 7 Serial Numbers」プラグインの紹介です。

この記事ではプラグインの特徴と使い方、連番の表示の見え方と、改修方法(2021年現在)などを解説しています。

もう一つ有名なフォームプラグインのMW WP Formではデフォルトである機能ですが、どうしてもContact From 7でお問い合わせ番号やタイムスタンプで管理したい時にとても使えるプラグインになります。

Contact Form 7 Serial Numbersプラグインとは

先ほど述べた内容の通り、通し番号かタイムスタンプ(UNIX)をメール本文につけて管理できる事。さらにデータベースに保存するプラグインと連携して、その番号で管理できることにあります。

また、通し番号などをContact Form 7で作成されたコンタクトフォームの数だけ、個別に番号の設定ができるという点があります。

例を挙げるとまず1つ目に「お問い合わせフォーム」の時は特定の接頭辞が付いた通し番号で、5桁の連番で、そして2つ目に「お問い合わせとは別のフォーム」の場合にタイムスタンプ(UNIX)で表示するといったように、問い合わせるフォームの内容の種類によって表示させる番号を自由に設定できることです。

プラグインのインストール

wordpress管理画面「プラグイン」>「新規追加」へ進み、Contact Form 7 Serial Numbersを検索してインストールします。

プラグインのインストール方法

インストールが完了すると、「有効化」にボタンが変化するので有効化します。

基本的な使用方法

インストールすると、管理画面「設定」>「Contact Form 7 Serial Numbers」が追加されているので、クリックして設定画面を開きます。

基本的な使用方法

プラグインの設定ページでは、すでにContact Form 7で登録されているフォームの数だけ、表示タイプや接頭語を設定できるようになっています。

表示タイプは「通し番号(接続語を任意で設定可能)」か「タイムスタンプ(UNIX)」のどちらを使うか選べるので、それぞれの設定方法を以下で順番に解説していくことにします。

表示タイプ「通し番号」

通し番号は「現在のカウント」「桁数」「接頭語」を設定可能です。

接続語は、番号の先頭に「No.」などの任意の好きな文言を設定できます。

桁数は、0~99の間で設定できますので、例えば0001~などで設定したい場合は「桁数:4」で設定する事で再現できます。

上の例で接続語・桁数を組み合わせると「No.0001」のように連番で0002、0003の要領でカウントされていきます。

表示タイプ「タイムスタンプ」

こちらは連番ではなく、メール送信がされたタイムスタンプ(UNIX時間)を取得して番号をつける事ができます。

UNIX時間で表示するメリットがある人がどれだけいるのか不明ですが、私の場合は2021年06月10日 22時42分の場合は、「20210610+通し番号」のように表示させたいのですが、デフォルトのままではできないのです。

後述しますが、プラグインを一部改修することで、タイムスタンプを「20210610+通し番号」のようにする事ができます。

更新ボタンをクリックしてください

通し番号またはタイムスタンプいずれかの設定が終われば「更新」ボタンをクリックします。

「メールタグ」に表示されたタグをコピーして、Contact form 7のメール設定画面へ移動し、メールの件名や本文で番号を表示したい場所に貼り付けます。

フォームのメール本文などに「メールタグ」を挿入

Contact Form 7の編集画面へ進み、「メール」タブをクリックして、メール件名や本文に「メールタグ」を挿入します。

フォームのメール本文などに「メールタグ」を挿入

Contact Form 7には、自動返信メールの設定もできるので、その場合はメール (2)にもチェックを入れ、同じようにメールのタイトルや本文に「メールタグ」を貼り付けることで、自動返信メールにも通し番号などを付与する事ができます。

データベースで管理しない場合はここまででOK

Contact Form 7で送信されるメールなどをデータベースに保存して管理する事がない場合はここまでで大丈夫ですが、通し番号などをつける場合は大抵データベースに保存して誰がどのタイミングでフォームに問い合わせしたのか管理する場合がほとんどですが、残念なことにこのプラグインの更新が止まっていて、その後の仕様変更などに最適化されていないので、このままではデータベースに正しくカウントされないのです。

ですがご安心ください。プラグインの一部を改修することで正しくカウントさせる事ができます。

プラグイン、改修編

さっそくプラグインを改修してデータベースにも正しくカウントされるようにしましょう。

FTPなどでプラグインの改修ができる人はFTP上から、該当ファイルを編集できますが、wordpress上で編集する場合は、管理画面「プラグイン」>「プラグインエディター」で改修ができますが、FTPでファイルを管理する方を推奨します。

contact-form-7-serial-numbers.phpを編集

該当ファイル「contact-form-7-serial-numbers.php」の222行目が対象のコードですので、まずはファイルを見てみましょう。

    // add serial number to posted data
    function add_serial_number_to_posted_data( $posted_data ) {

        if ( !empty( $posted_data ) ) {
            // id の取得
            $id = intval( $posted_data['_wpcf7'] );

上記はわかりやすくするため近縁のコードも含んでいますが、

id = intval( $posted_data['_wpcf7'] );

が該当のコードですので、ここの部分を下記に変更します。

$get_form = get_posts(array('post_type' => 'wpcf7_contact_form', 'posts_per_page' => -1))[0];
            $id = $get_form->ID;

変更できたら保存して、FTPの場合はファイルを上書きすれば完了です。

データベース管理プラグインを開いて、正しくカウントされているか確認してみましょう。

最後に、と次回の補足

デフォルトのままでも問題なく使用できる方ももちろんいるかと思いますが、フォーム内容をデータベースで管理する人にとってはこの状態のままでは使用する事ができないので、今回の方法でカウントを正しくデータベースに保存する事ができるのでオススメです。

Contact Form 7はこのプラグイン以外にもさまざまな拡張プラグインが用意されているので、使用する想定の幅が広がりますね。

次回はタイムスタンプ(UNIX)をミリ秒(UNIX時間)ではなく、今日の日付のタイムスタンプ表示に改修する方法を紹介します。

コメントを残す

メールアドレスが公開されることはありません。