概要
wpcf7_ajax_json_echo
フィルタは、Contact Form 7プラグインのデフォルトのJSONレスポンスをカスタマイズするために使用されます。このフィルタを使うことで、フォーム送信後のレスポンスを編集したり、追加のデータを挿入したりすることができます。様々な機能を実装する際に利用されることが多く、以下のような用途があります。
- テスト時にデバッグ情報を追加する。
- 認証制御を実施し、条件に応じたエラーメッセージを返す。
- フォームの送信後に特定のデータを含めたレスポンスを返す。
- クッキーやセッションデータを含める。
- カスタムフィールドの値をレスポンスに追加する。
- サーバーサイドでのデータ操作結果をレスポンスに反映させる。
フィルタの概要
- 構文:
add_filter( 'wpcf7_ajax_json_echo', 'your_callback_function', 10, 1 );
- パラメータ:
$response
: Contact Form 7によって生成されるJSONレスポンスデータ。
- 戻り値: 変更されたJSONレスポンスデータ。
- バージョン: Contact Form 7 4.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_ajax_json_echo', 'custom_success_message', 10, 1 );
function custom_success_message( $response ) {
if ( isset( $response['message'] ) ) {
$response['message'] .= ' - ありがとう!';
}
return $response;
}
このコードは、フォーム送信が成功した際のメッセージに「 – ありがとう!」を追加します。
引用元: https://contactform7.com/docs/
サンプル2: 特定の条件に基づくエラーメッセージ
add_filter( 'wpcf7_ajax_json_echo', 'conditional_error_message', 10, 1 );
function conditional_error_message( $response ) {
if ( ! is_user_logged_in() ) {
$response['invalid'] = [ 'message' => 'ログインが必要です。' ];
}
return $response;
}
このコードは、ユーザーがログインしていない場合にエラーメッセージを追加します。
引用元: https://contactform7.com/docs/
サンプル3: JSONレスポンスにカスタムデータを追加
add_filter( 'wpcf7_ajax_json_echo', 'add_custom_data_to_response', 10, 1 );
function add_custom_data_to_response( $response ) {
$response['custom_data'] = '追加情報';
return $response;
}
このコードは、JSONレスポンスに「追加情報」というカスタムデータを追加します。
引用元: https://contactform7.com/docs/
サンプル4: フォーム送信後のデバッグ情報追加
add_filter( 'wpcf7_ajax_json_echo', 'debug_info_to_response', 10, 1 );
function debug_info_to_response( $response ) {
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
$response['debug'] = 'デバッグ情報: 開発者モード';
}
return $response;
}
このコードは、デバッグモードが有効な場合にデバッグ情報をレスポンスに追加します。
引用元: https://contactform7.com/docs/
サンプル5: 条件に基づくカスタムレスポンス
add_filter( 'wpcf7_ajax_json_echo', 'conditional_custom_response', 10, 1 );
function conditional_custom_response( $response ) {
if ( isset( $_POST['your-field'] ) && $_POST['your-field'] === '特定の値' ) {
$response['message'] = '特別なメッセージが送信されました!';
}
return $response;
}
このコードは、特定の入力値に基づいて異なるメッセージをレスポンスに含めます。
引用元: https://contactform7.com/docs/