概要
wpcf7_posted_data_{$type}
フィルタは、Contact Form 7 プラグインにおいて、ユーザーがフォームに入力したデータを加工するためのフィルタです。このフィルタは、特定のタイプのデータが提出されたときにそのデータを変更するために使用されます。例えば、特定のフィールドの値を加工したり、追加の処理を実行する場合に利用されます。主な用途としては以下のようなケースが考えられます。
- 入力された値のフォーマットの変更
- 特定の条件に基づくデータの追加
- 値のバリデーション
- 特定のデータのマスキング
- 他のフィールドの値に基づく動的な変更
- データベースへのカスタム記録の準備
構文
add_filter( 'wpcf7_posted_data_{$type}', 'your_function_name', 10, 1 );
パラメータ
$type
: フィルタの適用対象となるデータタイプ(例:text
,email
など)your_function_name
: フィルタに渡される関数名
戻り値
- 加工されたデータの配列を返します。
使用可能なバージョン
- Contact Form 7: バージョン 5.0以降
- WordPress: バージョン 4.0以降
この関数のアクションでの使用可能性
アクション | 使用可否 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1: 電話番号のフォーマットを変更
このサンプルコードは、フォームで入力された電話番号を特定のフォーマットに変換します。
add_filter( 'wpcf7_posted_data_phone', 'format_phone_number' );
function format_phone_number( $data ) {
if ( isset( $data['phone'] ) ) {
$data['phone'] = preg_replace('/D/', '', $data['phone']); // 数字のみを取得
$data['phone'] = preg_replace('/(.{3})(.{3})(.{4})/', '$1-$2-$3', $data['phone']); // フォーマット
}
return $data;
}
引用元: https://contactform7.com/docs/
サンプルコード2: メールアドレスをカスタマイズ
このコードは、ユーザーが入力したメールアドレスにドメイン名を追加します。
add_filter( 'wpcf7_posted_data_email', 'add_domain_to_email' );
function add_domain_to_email( $data ) {
if ( isset( $data['email'] ) && !empty($data['email']) ) {
$data['email'] = $data['email'] . '@example.com';
}
return $data;
}
引用元: https://contactform7.com/docs/
サンプルコード3: メッセージを特定の条件に基づいて追加
このコードは、特定の条件に基づいてメッセージを追加します。
add_filter( 'wpcf7_posted_data_message', 'add_custom_message' );
function add_custom_message( $data ) {
if ( isset( $data['name'] ) && $data['name'] === '特定の名前' ) {
$data['message'] .= "n特別なメッセージ";
}
return $data;
}
引用元: https://contactform7.com/docs/
サンプルコード4: 特定フィールドに基づいて他のフィールドを削除
このコードは、特定のフィールドに基づいて他のフィールドを削除します。
add_filter( 'wpcf7_posted_data_other_field', 'conditional_field_removal' );
function conditional_field_removal( $data ) {
if ( isset( $data['key_field'] ) && $data['key_field'] == '特定の値' ) {
unset($data['other_field']); // 他のフィールドを削除
}
return $data;
}
引用元: https://contactform7.com/docs/
サンプルコード5: 日付のフォーマットを変更
このサンプルコードは、フォームで送信された日付を特定のフォーマットに変更します。
add_filter( 'wpcf7_posted_data_date', 'process_date_format' );
function process_date_format( $data ) {
if ( isset( $data['date'] ) ) {
$date = DateTime::createFromFormat('m/d/Y', $data['date']);
$data['date'] = $date->format('Y-m-d'); // フォーマットを変更
}
return $data;
}
引用元: https://contactform7.com/docs/