WordPressプラグイン開発 – 【邪道】ContactForm7を利用して顧客情報入力フォームを作りそのデーターを顧客DBに保存する

このブログは初心者がPHPを独習する過程で備忘録的に書いています。内容に不理解による誤りがあるかもしれません。もし、誤りがありましたらご指摘頂けば幸いです。

顧客ページに顧客情報を入力するフォームを作ろうと考えているのですが、その過程でというか、横道のそれてContactForm7からの送信データーを自動で顧客テーブルに保存するってのを先にやっちゃいました。

で、さて本番の顧客ページに顧客情報を入力するフォームを作ろうとした時にテスト的にContactForm7の出力したHTMLをペッタっと貼り付けてコードを書いたんですね。

そして実際にフォームを送信してみたら、それでちゃんと顧客データベースにデーターが入る。これ面白いなーと思って記事を書きます。

ContactForm7を利用すれば簡単にフォームデーターの処理が出来るのでは?

実際のコード

<?php
//ContactForm7から送信された情報を取得
function my_wpcf7_mail_sent($contact_form){

$submission = WPCF7_Submission::get_instance();
if($submission) {

//フォームデーターを取得
$formdata = $submission->get_posted_data();

//clientテーブルに追加
global $wpdb;
$table_name = $wpdb->prefix . 'kpw_client_table';
$wpdb->insert(
$table_name,
array(
'time' => current_time( 'mysql' ),
'client_name' => $formdata['client_name'],
'client_email' => $formdata['client_email'],
'client_subject' => $formdata['client_subject'],
)
);
}
}
add_action("wpcf7_mail_sent", "my_wpcf7_mail_sent");

//顧客情報入力フォーム(ContactForm7を利用)
function kpw_client_form() {
$kpw_client_form = <<< EOF
<div class="wrap">

<h2>■ 顧客情報入力フォーム</h2>

//ContactForm7が出力したHTML
<div role="form" class="wpcf7" id="wpcf7-f61-p62-o1" lang="ja" dir="ltr">
<div class="screen-reader-response"></div>
<form action="/#wpcf7-f61-p62-o1" method="post" class="wpcf7-form" novalidate="novalidate">
<div style="display: none;">
<input type="hidden" name="_wpcf7" value="61" />
<input type="hidden" name="_wpcf7_version" value="5.1.4" />
<input type="hidden" name="_wpcf7_locale" value="ja" />
<input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f61-p62-o1" />
<input type="hidden" name="_wpcf7_container_post" value="62" />
</div>
<p><label> お名前 (必須)<br />
<span class="wpcf7-form-control-wrap client_name"><input type="text" name="client_name" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" /></span> </label></p>
<p><label> メールアドレス (必須)<br />
<span class="wpcf7-form-control-wrap client_email"><input type="email" name="client_email" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email" aria-required="true" aria-invalid="false" /></span> </label></p>
<p><label> 題名<br />
<span class="wpcf7-form-control-wrap client_subject"><input type="text" name="client_subject" value="" size="40" class="wpcf7-form-control wpcf7-text" aria-invalid="false" /></span> </label></p>
<p><input type="submit" value="送信" class="wpcf7-form-control wpcf7-submit" /></p>
<div class="wpcf7-response-output wpcf7-display-none"></div></form></div>
EOF;

return $kpw_client_form;

}

?>

面倒な処理はContactForm7がやってくれそうな期待がありますが、実際はどうか分かりません。なので、いずれはContactForm7依存はやめて独自のフォームを作ろうと思います。

まとめ

ContactForm7のインストールを必須とすればこんな手抜きも可能かもしれません。

ただ、それはどうかとも思います。勉強にならないし、何かに依存すればするほど自主性がなくなっていきます。

とはいえ、今回の事でWordPressがやっている処理について若干でも勉強になったので良かったと思います。

2019/9/11 WordPressプラグイン開発は一旦終了しLaravelでの開発に切り替えました。

カンタンProWPとは
ファイルメーカーProを使用しないでWEB上でカンタンProの機能を実現するWordPressのプラグインです。2019年7月4日から開発を始めています。

だれでも手軽に、どこでも、安価にカンタンProを利用できるようにすることが開発の目的です。PHP(プログラミング言語)を使った開発になります。PHPについて一から勉強して開発を進めていきます。

コメント