投稿日:2021年9月18日
今回はContact Form 7に機能を追加するPlug-Inを検証し、より便利な申し込みフォームを作ってみたいと思います。
検証するPlug-Inは下記です。
| Plug-In名 | 概要 |
|---|---|
| Contact Form 7 Serial Numbers | Contact Form 7の問い合わせや申し込みに連番(シリアルナンバー)を付与します。 |
| Flamingo | Contact Form 7の問い合わせや申し込み履歴を保存します。 |
| Contact Form 7 Database Addon – CFDB7 | Contact Form 7の問い合わせや申し込み履歴をデータベースに保存します。 |
| Conditional Fields for Contact Form 7 | Contact Form 7の項目に条件分岐を実装します。 |
Contact Form 7 Serial Numbers
2022年2月6日 追記
Contact Form 7 Serial Numbersは2022年2月3日で閉鎖されてしまいました。
ダウンロードも現在できなくなっています。
WordPress.org 参照
Contact Form 7の問い合わせや申し込みに連番(シリアルナンバー)を付与します。

▲インストールして有効化します。
注意として最終更新が6年前になっており、開発が止まっていると思われます。
セキュリティーで脆弱性があるかも知れないのと、下で紹介するContact Form 7 Database Addonではカウントされなくなっています。

▲有効化すると設定に表示されます。

▲設定画面です。
現在のカウント:0がリセットされた状態。
リセットするときは、カウントの隣の設定をクリックしてから更新をクリックしないと反映されません。
桁数は、数値入力後、更新をクリックすると設定されますが、表示は0に戻ってしまいます。
この辺の改修は期待しない方がいいと思いますが、Plug-InのPHPに以下の修正を加えることで対応可能です。
Plug-InのPHPを書き換える禁断の処理なので、自己責任にてお願いします。
下記のPHPを開きます。
plugins > contact-form-7-serial-numbers > includes > class-contact_list_table.php
60行目に、
$digits = intval( get_option('nklab_wpcf7sn_digits_'));という記述があるので、下記のように書き換えます。
$digits = intval( get_option('nklab_wpcf7sn_digits_' . $item_id));メールタグにあるショートコードをContact Form 7のメッセージ本文に記述します。

▲このように記述しました。

▲メール内容です。このように管理番号として扱うことができます。
Flamingo
Contact Form 7はメール送信は行いますが、履歴を管理する機能は搭載されていません。
Flamingoは履歴を管理し、CSVを書き出すことができるPlug-Inです。

▲インストールして有効化します。

▲有効化するとメニューに表示されます。
Flamingoのメニューにはアドレス帳と受信メッセージがあります。

▲アドレス帳は、問い合わせを行なったユーザーを一覧表示し、文字通りアドレス帳として機能します。
履歴をクリックすると個々の受信メッセージが表示されます。
▼メールアドレスをクリックすると下図のように個人の情報を編集、タグ付けも可能です。

削除もこの画面で行います。
エキスポートをクリックすると個々のCSVとしてダウンロードすることができます。
「cf7-flamingo-contact-タイムスタンプ」というファイル名になります。

▲アドレス帳全体からエクスポートしたCSV。
同じく「cf7-flamingo-contact-タイムスタンプ」というファイル名になります。

▲受信メッセージ。
件名はContact Form 7の「題名(タイトル)」になるので、項目を設定してないとyour-subjectと表示されます。

▲それぞれをクリックすると詳細が表示されます。
シルアルナンバーも反映されているのが分かります。

▲受信メッセージ一覧からエクスポートしたCSV。
アドレス帳同様、個々のCSVのエクスポートができます。
your-email_confirmはemail確認で入力した項目。
CSVへ反映されなくても良いのですが、この辺のカスタマイズはできるのでしょうか???
履歴管理は下図のように、データベースにpost(投稿)として内容がまとめられます。
PHP、SQLを使って操作できないような感じがします。。。

Contact Form 7 Database Addon
Plug-In名通り、Contact Form 7の履歴をデータベースに保存します。

▲インストールして有効化します。

▲db7_fomrsというテーブルを作り、その中に詳細を書き込みます。

▲有効化するとメニューに表示されます。
メニュー内にはコンタクトフォームリストとExtensionsがあります。

▲コンタクトフォームリスト
コンタクトフォーム名と件数を確認できます。
コンタクトフォーム名をクリックすると一覧が表示されます。

▲一覧が表示されます。
個々をクリックすると詳細が表示されます。
詳細表示後は既読扱いとされ、細字で表示されます。
太字は詳細確認をしておらず、未読の扱いになっているということです。
一括操作で既読、未読を切り替えられます。

▲個々の詳細。

▲CSVをエクスポートでエクスポートできます。
冒頭でも書きましたが、Contact Form 7 Serial Numbersのシリアルナンバーが正常に書き出されず、すべて「1」になっています。
Plug-In Contact Form 7 Serial Numbers のPHPに以下の修正を加えることで対応可能です。
Plug-InのPHPを書き換える禁断の処理なので、自己責任にてお願いします。
下記のPHPを開きます。
plugins > contact-form-7-serial-numbers > contact-form-7-serial-numbers.php
222行目に、
$id = intval( $posted_data['_wpcf7'] );という記述があるので、下記のように書き換えます。
$get_form = get_posts(array('post_type' => 'wpcf7_contact_form', 'posts_per_page' => -1))[0];
$id = $get_form->ID;
▲Extensions
名前の通り機能を追加しますが有償となります。
それぞれの詳細は省きます。
Conditional Fields for Contact Form 7
Contact Form 7の項目に条件分岐を実装します。
例えば、チェックボックスで、「その他」を選択すると、「その他入力欄」を表示させるなどに使えます。

▲インストールして有効化します。

▲お問い合わせに追加されます。

▲Conditional Fieldsをクリックすると上図が開きます。

▲翻訳したものです。
animationはjQueryのshow()とかhide()とか使ってそうですね。
Get PRO で有償のPRO版を入手できます。
色々できそうなので検証してもいいと思います。

▲お問い合わせのタブにConditional Fieldsが追加されます。
分かりやすい表示で、親しみやすいですね。

▲フォームタブにはConditional Fields Groupが追加されています。

▲[group qr][/group]と記述してみました。

▲フォームに記述後のConditional Fieldsタブ。
ラジオボタン radio-329の値が「はい」の場合にqrグループを表示するという設定です。

▲右上のText modeをオンにするとこのように表示されます。

▲メッセージ本文の記述。
これは「はい」の場合にQRコードを表示させる記述になります。

▲メールに表示されました・

▲こちらは「いいえ」の場合。QRコードは表示されません。
使用例をもう一例、動画にしてみました。
よく見かけるラジオボタンの項目です。
▲その他入力欄を必須項目にしてますが、その他をクリックして表示させない限り必須にはなりません。
いつも、手動でゴリゴリ書いているので、これは便利ですね。
今回は、4つのPlug-Inを紹介しました。
どれもフォーム作りにかかせない機能です。
Flamingo と Contact Form7 Database Addon – CFDB7 は、どちらも履歴管理に関するPlug-Inで、どちらを使うかは悩ましいところがあります。。。
最近は、Googleフォーム など無償のツールもありますが、項目のカスタマイズや条件分岐、バリデートの設定など、色々とカスタマイズしないといけない場合が多々あります。
WordPressでのフォーム作りも十分な選択肢になるので、今後、仕事でフォーム作成を行う場合 Contact Form 7 で作ってみたいと思います。
最後まで読んでくださりありがとうございました。






