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

[temp id=2]

顧客ページに顧客情報を入力するフォームを作ろうと考えているのですが、その過程でというか、横道のそれて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がやっている処理について若干でも勉強になったので良かったと思います。

[temp id=1]
シェアする
購入する
購入する