WordPressを利用してアンケートフォームを作成しました。アンケートフォームで入力した結果はデータベースに登録され、最終的にはCSVファイルにてアンケート結果を確認・集計することが可能です。
システム概要
システム詳細
- 講演会後の講演内容についてアンケートをWeb入力させたい
- アンケート結果はExcelまたはCSVで出力したい
作業手順
WordPress構築
アンケートフォームはWordpressを利用するため、契約済みのレンタルサーバでWordpressをインストールします。今回はさくらサーバを利用してWordpressを構築しました。
アンケートフォーム作成
アンケートフォーム作成にはWordpressのプラグインを使用しました。本来はホームページのお問い合わせページの項目として利用される「Contact Fom 7」を利用しています。
画面デザイン
プラグインでフォームを作成しただけでは殺風景となってしまうため、cssを使って画面の見栄えをよくするためにデザイン・コーディングしていきます。
その他設定
スパムメール対策
「Contact Form 7」はスパムメールの標的になることが多いことから「reCAPTCHA(リキャプチャ)」を設定しました。この設定がないと数秒間で大量のスパムメールが送信されてしまいます。
確認画面作成
アンケートフォームの入力間違いを防ぐため確認画面を追加しました。こちらは「Contact Form 7 add confirm」のプラグインを利用しています。このプラグインでは「Contact Form 7」に確認ボタンを追加でき、入力フォームと同じデザインで確認画面を表示するようにできます。
データベース登録
アンケートフォームの回答結果は最終的にCSVファイルに出力する必要があります。そのため、データベースを作成しアンケートフォームから入力した値をデータベースに格納する必要があります。
そのために「Contact Form CFDB7」というプラグインを利用しました。
!注意!Contact Form 7 でデータが2件登録される問題発生
Contact Form 7 add confirmで追加した確認画面(ボタン)!この処理を行ったタイミングでデータがPOSTされ、最後アンケートを回答したタイミングでPOSTされるので、1回のアンケート回答でデータが2件登録される問題が発生しました。
解決策は以下の2通りです。
- Contact Form 7 Multi-Step Formsで確認画面を構築する
- Contact Form 7 add confirmのプラグインを改修する
PHPのコーディングに自信のない方は「Contact Form 7 Multi-Step Formsで確認画面を構築する」で対応してください。今回は「Contact Form 7 add confirmのプラグインを改修する」で対応しました。
理由としては、PHPは見ればわかる、すでにクライアント検収まで進んでいるためプラグイン差し替えによる再テストの工数がないためです。
Contact Form 7 add confirmのプラグインを改修する
修正方法
- プラグインエディタを開く
- contact-form-cfdb7を選択する
- contact-form-cfdb-7.phpを開く
- 116行目付近を修正する
function cfdb7_before_send_mail( $form_tag ) {
global $wpdb;
$cfdb = apply_filters( 'cfdb7_database', $wpdb );
$table_name = $cfdb->prefix.'db7_forms';
$upload_dir = wp_upload_dir();
$cfdb7_dirname = $upload_dir['basedir'].'/cfdb7_uploads';
$time_now = time();
$submission = WPCF7_Submission::get_instance();
$contact_form = $submission->get_contact_form();
$tags_names = array();
$strict_keys = apply_filters('cfdb7_strict_keys', false);
// 修正前
// if ( $submission ) {
// 修正後
if ( $submission && $_POST['_wpcf7c'] ==='step2' ) {
$allowed_tags = array();
if( $strict_keys ){
$tags = $contact_form->scan_form_tags();
foreach( $tags as $tag ){
if( ! empty($tag->name) ) $tags_names[] = $tag->name;
}
$allowed_tags = $tags_names;
}
こちらの対処を行うことで確認画面ではデータ登録されず、最後の回答時のみデータ登録が行われるようになりました。
ただしプラグインを修正したため、プラグインのバージョンアップが行われると当該ファイルも上書きされる可能性もあり、再度2件データ登録される事象が発生しますので、プラグインは自動更新せずに更新情報を確認したら手動で更新しその後プラグインの修正を行うようにしましょう。
まとめ
WordPressのプラグインを使うとアンケートフォームが簡単に作成できます。またレスポンシブ対応のテーマを利用することでパソコンからもスマートフォンからもアンケート入力ができるようになります。
アンケート業者にアンケートの作成から回収までを依頼すると多額の費用が発生しますが、自分で簡単にアンケートフォームを作成できるのであればぜひ活用してもらいたいです。