プラグインContact Form 7のwpcf7_posted_data_{$type}フィルタの使用方法・解説

概要

wpcf7_posted_data_{$type} フィルタは、Contact Form 7 プラグインにおいて、ユーザーがフォームに入力したデータを加工するためのフィルタです。このフィルタは、特定のタイプのデータが提出されたときにそのデータを変更するために使用されます。例えば、特定のフィールドの値を加工したり、追加の処理を実行する場合に利用されます。主な用途としては以下のようなケースが考えられます。

  1. 入力された値のフォーマットの変更
  2. 特定の条件に基づくデータの追加
  3. 値のバリデーション
  4. 特定のデータのマスキング
  5. 他のフィールドの値に基づく動的な変更
  6. データベースへのカスタム記録の準備

構文

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/

この関数について質問する


上の計算式の答えを入力してください