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 はフォームのバリデーション後、送信前に呼ばれます。
まとめ
Contact Form 7では、送信前にユーザーの入力内容を自在に加工できます。wpcf7_posted_data を使えば、ビジネスマナーに配慮した敬称の追加や、特定文字列の変換、不要な文字の削除など、柔軟なカスタマイズが可能です。フォーム送信時の見栄えやデータ整形にこだわりたい方は、ぜひ活用してみてください。