update: 638view
Contact Form CFDB7で出力時のカラム名の変更方法
プラグイン「Contact Form CFDB7」のデータ保存の際についてです。
記事のもくじ
プラグイン「Contact Form CFDB7」はContact Form7で送信されたデータをデータベースに保存し、フォームごとにcsvファイルの出力ができるものです。
フォームが送信されると指定したメールアドレスにも内容が送信されますが、見逃したり、いろんなメールに埋もれたり...などの心配が解消されます。
リスト化されているので見やすく管理ができるんです。
実際にダウンロードしたcsvファイルをExcelで開いてみました。
文字化けしていた場合
Excelでダウンロードしたcsvファイルをそのまま開くと文字化けしている時の対処法としては。
csvファイルを秀丸で開き、[ファイル]⇒[エンコードの種類]⇒[日本語(Shift-JIS)]を押下。
[内容を維持したまま適用]を選択し、ファイルを上書き保存します。一旦ファイルを閉じて、csvファイルをExcelで開くと文字化けが解消されます。
カラム名の変更
ダウンロードしたcsvファイルを確認するとContact Form7で設定したテキストボックスやチェックボックス、テキストエリアなどなど。
部品の名前がcsvファイルのカラム名になります。
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