プラグインContact Form 7のwpcf7_save_contact_formアクションの使用方法・解説

概要

wpcf7_save_contact_formは、Contact Form 7プラグインで定義されたアクションフックです。このフックは、フォームが保存された後、さまざまな処理をトリガーするために使用されます。主に、フォームデータのカスタム処理や、保存操作に対するカスタムロジックを実装する際に利用されます。

このフックを使用するシーン

  1. フォームの送信データをデータベースに保存
  2. 特定の条件に基づいてユーザー通知を送信
  3. フォーム内容に基づいて外部APIにデータを送信
  4. アナリティクスのトラッキング用のデータを記録
  5. フォームのカスタムフィールドを操作
  6. 管理画面にカスタムメッセージを表示

構文

do_action( 'wpcf7_save_contact_form', $contact_form );

パラメータ

  • $contact_form: 保存されたContact Form 7のインスタンス。

戻り値

  • なし(このアクションは何も返さない)。

使用可能なバージョン

  • Contact Form 7のバージョン: 5.0以上
  • WordPressのバージョン: 5.0以上

サンプルコード

サンプルコード1: フォームデータをカスタムテーブルに保存

このコードは、Contact Form 7の送信データを独自のカスタムテーブルに保存します。

add_action('wpcf7_save_contact_form', 'save_contact_form_data');

function save_contact_form_data($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();
        global $wpdb;
        $wpdb->insert('your_custom_table', array(
            'name' => $data['your-name'],
            'email' => $data['your-email'],
            'message' => $data['your-message'],
        ));
    }
}

引用元: https://contactform7.com

サンプルコード2: メールを送信

このコードは、フォームが保存された後にカスタムメールを送信します。

add_action('wpcf7_save_contact_form', 'send_custom_email');

function send_custom_email($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();
        wp_mail('admin@example.com', 'New Contact Form Submission', 'Message: ' . $data['your-message']);
    }
}

引用元: https://contactform7.com

サンプルコード3: フォーム送信のアナリティクス処理

このコードでは、Google Analyticsに送信データを記録します。

add_action('wpcf7_save_contact_form', 'log_to_google_analytics');

function log_to_google_analytics($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();
        echo "<script>
                gtag('event', 'contact_form_submission', {
                    'event_category': 'Contact Form',
                    'event_label': '" . esc_js($data['your-name']) . "'
                });
              </script>";
    }
}

引用元: https://contactform7.com

サンプルコード4: 特定の条件下での通知

このコードは、特定の条件を満たす場合に管理者に通知を送信します。

add_action('wpcf7_save_contact_form', 'conditional_admin_notification');

function conditional_admin_notification($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();
        if ($data['your-message'] === 'urgent') {
            wp_mail('admin@example.com', 'Urgent Contact Form Submission', 'There is an urgent submission.');
        }
    }
}

引用元: https://contactform7.com

サンプルコード5: APIへのデータ送信

このコードは、フォームの送信データを外部APIに送信します。

add_action('wpcf7_save_contact_form', 'send_data_to_api');

function send_data_to_api($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();
        $response = wp_remote_post('https://api.example.com/data', array(
            'body' => json_encode($data),
            'headers' => array('Content-Type' => 'application/json'),
        ));
    }
}

引用元: https://contactform7.com

この関数のアクションでの使用可能性

アクション 使用例
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

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


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