投稿日:2022年3月19日

修正日:2022年9月17日
form.phpのソースコード、120行目 setTimeout() 追記。
これがないと2桁の数値が入らない。

QRコードレーダーで17を読み込むと1と7が読み込まれる。
input関数の反応を1秒後に行うことで2桁以上の数値に対応。
※もっといい方法がないか後日検証してみます。
 

ここ数年、検証しては頓挫していたWordPress(Contact Form 7)で作るQRコード受付システムがようやくできました。
※「QRコード」は株式会社デンソーウェーブ様の登録商標です。
 

必要なWordPress Plug-Inは、Contact Form 7FlamingoContact Form 7 Database Addon – CFDB7(以下、CFDB7)
申し込みフォームからの登録、QRコード付きの完了メール送信、データベースへの保存は上記のPlug-Inを使います。
これらは下記の記事にまとめてますのでご参照ください。






 

今回は、申し込んだ人の表示QRコードリーダーを利用したチェックフラグ付けなどの話しをします。
 

form.php

▲PHPでデータベースから取得するのはセオリー通りの書き方です。

先日の記事でお伝えした通り、CFDB7からの取得は64行目のように、unserialize関数を使って展開します。
60行目のflag列は、確認用なのでhiddenで隠してあります。
ajaxを使い、JavaScriptから変数(変更したフラグ値)をcheck.phpへ渡しデータベースを更新します。(69行目〜関数)
 

check.php

▲21行目のSQLでUPDATE(更新)しています。

 

受付一覧
▲結果、このように表示されます。
 

QRコード付きメール
Contact Form 7で送信したQRコード付きのメール。
内容は、下で紹介するContact Form 7からのシリアルナンバーのみです。
このQRコードをリーダーで読むとフラグを立て、状態をデータベースへ保存します。
 
下図のようにチェックが入り、背景色が赤くなります。
受付一覧
手動チェックでも、状態をデータベースへ保存できます。
 

受付一覧
▲データベース。チェック時はflagを1に、外れているときは0にします。
flagフィールドはCFDB7では作成されないので、自分で追加しました。

 
受付番号は、Contact Form 7の公式ページ で紹介されているショートコードを使いました。
Contact Form 7
▲このように記述します。0埋めはできません。後日検証します。
このショートコードを使うにはFlamingo  1.5以上がインストールされていることが条件になります。
シリアルナンバーの数値はFlamingoの受信メッセージ数を反映したものなので、履歴が残っていると意図しない数値から開始されてしまいます。
Flamingo
▲Flamingoの受信メッセージ画面
 

Flamingo
▲クリアするには、全てを選択しゴミ箱を入れましょう。
 

データベース
▲データベース側のリセットにはAUTO_INCREMENT1にする必要があります。
 

以前にもお伝えしましたが、定評だった、Contact Form 7にシリアルナンバーを付与するPlug-InContact Form 7 Serial Numbersは2022年2月3日で閉鎖されてしまいました。
ダウンロードも現在できなくなっています。
WordPress.org 参照
 

まとめ

およそ2年前から「どうにかしないといけない」と思いつつ、頓挫してた受け付けシステムがようやくできました。
何かのお役に立てればと思います。
 

最近になって再検証を始めたのですが、思っていたよりスムーズに進み、抱えてたモヤモヤが一つ解決した次第です。。。
普段の積み重ねが役に立ったと思いつつ、これからも、色々と挑戦したいと思います。
 

お断り、本記事で紹介しているソースコードは自由に使っていただいても構いませんが、問題が生じても責任は負いませんのでご了承ください。
最後まで読んでくださりありがとうございました。
 

Pocket