WordPressのコンタクトフォームプラグイン「Contact Form 7」の受信データを保存するために「Flamingo」を使っている方も多いでしょう。
FlamingoのCSVエクスポート機能を利用すると、デフォルトではCSVのヘッダー行にname
属性の値が表示されます。しかし、name
名ではなく、より分かりやすい「ラベル名」を表示したい場合があります。
そこで、今回は functions.php
にコードを追加することで、CSVエクスポート時のヘッダーをラベル名に変更する方法を解説します。
実装方法
以下のコードを functions.php
に追加してください。
/***********************************************************
* FlamingoのCSVエクスポートでヘッダーをラベル名に変更する
***********************************************************/
add_filter('flamingo_inbound_csv_class', function ($csv_class) {
// クラスが存在する場合は常にカスタムクラスを返す
if (class_exists('Flamingo_Inbound_CSV')) {
return 'Custom_Flamingo_Inbound_CSV';
}
return $csv_class;
});
// 親クラスが存在する場合のみカスタムクラスを定義
if (class_exists('Flamingo_Inbound_CSV')) {
// カスタムCSVクラスを作成
class Custom_Flamingo_Inbound_CSV extends Flamingo_Inbound_CSV
{
public function print_data()
{
$args = array(
'posts_per_page' => -1,
'orderby' => 'date',
'order' => 'DESC',
);
// 検索条件の適用(必要に応じて変更)
if (!empty($_REQUEST['s'])) {
$args['s'] = $_REQUEST['s'];
}
$items = Flamingo_Inbound_Message::find($args);
if (empty($items)) {
return;
}
$labels = array_keys($items[0]->fields);
// フィールド名とラベル名のマッピング
$field_labels = array(
'your-name' => 'お名前',
'your-email' => 'メールアドレス',
'your-subject' => '件名',
'your-message' => 'メッセージ内容'
// 必要に応じて追加
);
// ラベル名を適用
$custom_labels = array();
foreach ($labels as $label) {
$custom_labels[] = isset($field_labels[$label]) ? $field_labels[$label] : $label;
}
// ヘッダー行を出力
echo flamingo_csv_row(
array_merge($custom_labels, array(__('Date', 'flamingo')))
);
// データ行を出力
foreach ($items as $item) {
echo "\r\n";
$row = array();
foreach ($labels as $label) {
$col = isset($item->fields[$label]) ? $item->fields[$label] : '';
if (is_array($col)) {
$col = flamingo_array_flatten($col);
$col = array_filter(array_map('trim', $col));
$col = implode(', ', $col);
}
$row[] = $col;
}
$row[] = get_post_time('c', false, $item->id()); // Date
echo flamingo_csv_row($row);
}
}
}
// フィルターフックでカスタムCSVクラスを適用
add_filter('flamingo_inbound_csv_class', function ($csv_class) {
return 'Custom_Flamingo_Inbound_CSV';
});
}
コードのポイント解説
- カスタムクラスの適用
flamingo_inbound_csv_class
フィルターを利用してCustom_Flamingo_Inbound_CSV
クラスを適用します。
- フィールド名とラベルのマッピング
your-name
→お名前
your-email
→メールアドレス
your-subject
→件名
your-message
→メッセージ内容
- 必要に応じて追加・編集可能です。
- ヘッダーの変更
flamingo_csv_row()
を使ってラベル名をCSVのヘッダーに出力。
- データ行の出力
- フィールドが配列の場合、カンマ区切りで結合。
- 送信日時を
get_post_time('c', false, $item->id())
で取得。
まとめ
このカスタマイズを行うことで、FlamingoのCSVエクスポート時にヘッダー行を name
属性ではなく、分かりやすい「ラベル名」に変更できます。
メリット
- CSVを開いたときに分かりやすいフォーマットになる
- フォームの
name
属性ではなく、実際の項目名を表示できる functions.php
に追加するだけで簡単に導入可能
Flamingoを活用している方は、ぜひ試してみてください!