WordPress中如何利用eideasy_user_identified钩子输出数据并预填充表单
针对eideasy_user_identified钩子的入门技巧与示例
1. 输出eID Easy返回的数据数组
直接通过add_action()注册钩子回调,就能拿到返回的用户数据。注意不要直接在页面输出(可能打乱页面结构),推荐用日志记录的方式查看:
// 代码添加到主题functions.php或自定义插件中 add_action('eideasy_user_identified', 'log_eideasy_user_data', 10, 1); function log_eideasy_user_data($user_data) { // 将数据转为JSON格式写入WordPress调试日志 error_log('eID Easy用户数据: ' . json_encode($user_data, JSON_PRETTY_PRINT)); // 调试阶段临时前端输出(生产环境禁用) // echo '<pre>'; // var_dump($user_data); // echo '</pre>'; }
触发eID Easy身份验证流程后,去wp-content/debug.log查看数据(需先在wp-config.php开启调试:define('WP_DEBUG_LOG', true);)。
2. 用返回数据预填充其他插件表单字段
核心是把eID数据临时存储(比如PHP会话),再通过目标插件的钩子替换字段值。以下是Contact Form 7的示例:
第一步:存储数据到会话
先确保WordPress启用会话,再在钩子回调里保存需要的字段:
// 启用会话 add_action('init', 'start_custom_session'); function start_custom_session() { if (!session_id()) { session_start(); } } // 存储eID数据到会话 add_action('eideasy_user_identified', 'store_eideasy_data_to_session', 10, 1); function store_eideasy_data_to_session($user_data) { // 按需提取并存储字段,比如姓名、邮箱 $_SESSION['eideasy_user'] = [ 'full_name' => $user_data['full_name'] ?? '', 'email' => $user_data['email'] ?? '' ]; }
第二步:预填充Contact Form 7字段
用CF7的wpcf7_form_tag钩子替换指定字段值:
add_filter('wpcf7_form_tag', 'prepopulate_cf7_fields', 10, 2); function prepopulate_cf7_fields($tag, $unused) { if (!isset($_SESSION['eideasy_user'])) { return $tag; } // 匹配表单字段名,比如你的CF7字段为[full-name]和[user-email] switch ($tag->name) { case 'full-name': $tag->values = [$_SESSION['eideasy_user']['full_name']]; $tag->raw_values = [$_SESSION['eideasy_user']['full_name']]; break; case 'user-email': $tag->values = [$_SESSION['eideasy_user']['email']]; $tag->raw_values = [$_SESSION['eideasy_user']['email']]; break; } return $tag; }
通用注意事项
- 不同插件的表单钩子不同,比如Gravity Forms用
gform_field_value_{field_name},需查阅对应插件文档。 - 表单提交后可清理会话数据,避免重复填充。
- 生产环境记得关闭
WP_DEBUG_LOG,防止日志文件过大。
内容的提问来源于stack exchange,提问作者greg
相关产品推荐
相关产品推荐

