nobee

update: 638view

Contact Form CFDB7で出力時のカラム名の変更方法

Contact Form CFDB7で出力時のカラム名の変更方法

プラグイン「Contact Form CFDB7」のデータ保存の際についてです。

プラグイン「Contact Form CFDB7」はContact Form7で送信されたデータをデータベースに保存し、フォームごとにcsvファイルの出力ができるものです。

フォームが送信されると指定したメールアドレスにも内容が送信されますが、見逃したり、いろんなメールに埋もれたり...などの心配が解消されます。

リスト化されているので見やすく管理ができるんです。

実際にダウンロードしたcsvファイルをExcelで開いてみました。

csvファイルをExcelで開いてみると...

文字化けしていた場合

Excelでダウンロードしたcsvファイルをそのまま開くと文字化けしている時の対処法としては。

csvファイルを秀丸で開き、[ファイル]⇒[エンコードの種類]⇒[日本語(Shift-JIS)]を押下。

[内容を維持したまま適用]を選択し、ファイルを上書き保存します。一旦ファイルを閉じて、csvファイルをExcelで開くと文字化けが解消されます。

カラム名の変更

ダウンロードしたcsvファイルを確認するとContact Form7で設定したテキストボックスやチェックボックス、テキストエリアなどなど。
部品の名前がcsvファイルのカラム名になります。

カラム名がinputの属性値

Contact Form7で設定した部品は下記だとすると「name1」が氏名のカラム名、「email-50」がメールアドレスのカラム名になります。

[text* name1 placeholder"名前を入力してください。"]
[email email-50 placeholder"メールアドレスを入力してください。"]
    

名前やメールアドレスでしたら、カラム名を変更せずそのままでわかりやすいですが、普段使わないような単語だったりすると、自分で設定したのに何かわからなくなります(汗)

自分ならまだしも...クライアント側からすると尚更わからないですよね。

そこでカラム名の変更する必要がありました。
今回はcsvファイルの出力時のみカラム名の変更をする方法です。

プラグインのカスタマイズ

WordPressのダッシュボードの[プラグイン]⇒[プラグインエディター]を選択。

プラグインのカスタマイズ方法

右側にある[編集するプラグインを選択]のプルダウンから「Contact Form CFDB7」を選択し、選択ボタンを押下。

incの中のexport-csv.phpを開いて変更を加えます。

※変更を加えるのでexport-csv.phpの記述を必ずバックアップを取ることを忘れずに、デス!!
念には念を入れよ、ですので修正前も修正後もバックアップとしてファイルを残しておくことをオススメします。
修正後、というのはプラグインの更新でファイルが書き換わった場合のためにも役立つはずです。

記述を変更する部分は53~55行目のあたりです。

変更する記述はこの部分です。

配列$array_keysの$aKeysに部品の名前が入りますので、一つずつ判別して変更していきます。

            switch($aKeys){
	      case 'status':
                $tmp = '状態';
                break;
             case 'name':
	        $tmp ='氏名';
                break;
             case 'email':
	        $tmp = 'メールアドレス';
	        break;
             case 'summary':
	        $tmp = '内容';
	        break;
             case 'company_name':
	        $tmp = '会社名';
	        break;
             case 'department':
	        $tmp = '部署名';
	        break;
                 ・
                 ・
                 ・
              default:
                $tmp = str_replace( $unwanted, '', $aKeys );
                $tmp = str_replace( array('-','_'), ' ', $tmp );
                break;
             }

             $heading[] = $tmp;

    

switch文の対象となる値'status'とかの値は部品の名前をそのまんまです。

if文でもできます。

            if( $aKeys == 'status' ) $aKeys = '状態';
            if( $aKeys == 'name' ) $aKeys = '氏名';
            if( $aKeys == 'email' ) $aKeys = 'メールアドレス';
            if( $aKeys == 'summary' ) $aKeys = '内容';
            if( $aKeys == 'company_name' ) $aKeys = '会社名';
            if( $aKeys == 'department' ) $aKeys = '部署名';
                 ・
                 ・
                 ・
            $tmp       = str_replace( $unwanted, '', $aKeys );
            $tmp       = str_replace( array('-','_'), ' ', $tmp );
            $heading[] = ucwords( $tmp );

    

部品の名前をそもそも日本語で設定したら良いのでは??という発想もあるかと思いますが、フォーム自体が動作しなくなる(?)ようです。

いろいろと調べたのですが、該当するような記事は見当たらなく、、、、自力でなんとかやり遂げましたが。
もっと良い方法がありますよ!!があったらご指摘くださいネ(;^_^A

share

人気記事