You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 01:15:39