Contact Form DB でチェック処理

Contact Form DB でテーブルへの insert を行う前に、何らかのチェック処理を入れたい場合、フックを使います。

上記の例では、入力フォームで a,b,c という3つの入力項目があり、その値を受け取って、a と b、または a と c が一致指定なければ $cf7->skip_mail に true を代入しています。

こうすると、Contact Form 7 のメール送信はスキップされます。しかしDBへの登録はとまりません。

そこで、 Contact Form DB のソースを一部改変します。

/wp-content/plugins/contact-form-7-to-database-extension CF7DBPlugin.php 467行目付近に以下処理を追加します。

単純に、$cf7->skip_mail が true を代入されていたら、Contact Form DB の処理を終了するということです。

これでDBへのinsertがとまるのですが、これだけだとブラウザで見た時、あたかも登録されたようなメッセージが出力されてしまいます。

そこで、さらに Contact Form 7 のソースを一部改変します。

/wp-content/plugins/contact-form-7/includes classes.php 467行目付近の処理を以下のように変えます。

これは、元々、$cf7->skip_mail はメール送信を抑制するフラグなのですが、これが true の時、true を return しているので、ブラウザで見ると成功しているように見えるわけです。

そこで、$cf7->skip_mail が true の時(チェック処理に引っかかった時)に return false してあげれば、エラーが出てくれます。

ちなみに、メールはそもそも送りたくない場合は、さらに

という風に、else で return true してあげれば、チェック処理に引っかからない場合、DB登録したあと、成功のメッセージが表示されます。

おすすめ記事