WordPressの人気フォームプラグイン「Contact Form 7」では、ユーザーが送信したデータをそのままメールに転送するのが基本です。しかし、送信前に入力内容を加工したいケースもあります。たとえば、入力された名前の先頭に敬称を付けたい、特定の文字列を置換したい、などです。
この記事では、Contact Form 7のフックを使って、ユーザーの入力内容を送信前に加工する方法を紹介します。
フィルターフックを使って入力内容を加工する
Contact Form 7では、wpcf7_posted_data フィルターを使うことで、送信されるデータを加工できます。
以下は、名前(your-name)の先頭に「様」を追加して送信する例です。
// functions.phpに追記
add_filter('wpcf7_posted_data', 'custom_modify_form_data');
function custom_modify_form_data($posted_data) {
if (isset($posted_data['your-name'])) {
$name = $posted_data['your-name'];
$posted_data['your-name'] = $name . ' 様';
}
return $posted_data;
}
他にもできる加工の例
改行や空白の除去
$posted_data['your-message'] = trim(preg_replace('/\s+/', ' ', $posted_data['your-message']));
特定文字列の置換
$posted_data['your-subject'] = str_replace('旧キーワード', '新キーワード', $posted_data['your-subject']);
注意点と補足
- フィルター関数は functions.php などに記述します。
- フィールド名(your-nameなど)はフォーム設定と一致している必要があります。
- wpcf7_posted_data はフォームのバリデーション後、送信前に呼ばれます。
よくある質問(FAQ)
Q. CF7でメール送信前にフォームデータを加工するには?
A. wpcf7_before_send_mailフィルターで送信前のCF7_Mailオブジェクトを取得し、get_body()・set_body()でメール本文を書き換えます。個人情報の一部マスク(例: メールアドレスの@以降を非表示)もここで実装できます。
Q. CF7で送信されたメールアドレスをマスクして表示するPHPコードは?
A. preg_replace(‘/(?<=.{3}).(?=.*@)/', '*', $email)のような正規表現で@より前の一部をアスタリスクに置換できます。マスク処理はサーバー側で行いDBには元データを保存するのが基本設計です。
Q. CF7の送信確認画面でマスクされた内容をプレビューするには?
A. CF7の確認画面機能(confirm_mail)はプラグイン拡張(CF7 to DB Extension等)が必要です。標準機能では確認画面の実装は限定的なため、カスタムフォームでJavaScriptによるプレビュー表示が現実的な選択肢です。
まとめ
Contact Form 7では、送信前にユーザーの入力内容を自在に加工できます。wpcf7_posted_data を使えば、ビジネスマナーに配慮した敬称の追加や、特定文字列の変換、不要な文字の削除など、柔軟なカスタマイズが可能です。フォーム送信時の見栄えやデータ整形にこだわりたい方は、ぜひ活用してみてください。

