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

如何在WordPress的functions.php中添加仅登录时触发的函数?

实现WordPress登录时触发用户信息POST接口的完整方案

需求回顾

你想要在WordPress中实现一个仅在用户登录时触发的函数,将用户的ID和邮箱以JSON格式POST到指定的外部接口。

原代码的问题分析

你的核心思路是对的,但存在几个关键问题导致代码无法正常运行:

  • 变量名不一致:初始化CURL用的是$curl,但设置CURLOPT_RETURNTRANSFER时误写为$ch
  • 错误处理未完成:curl_error($resu... 不仅参数错误,代码也未写完
  • 缺少钩子绑定:函数没有挂载到WordPress的登录动作钩子,无法在用户登录时自动触发

修正后的完整代码

把这段代码添加到你的主题(或子主题)的functions.php文件中即可:

// 绑定WordPress登录钩子,用户成功登录时自动触发函数
add_action( 'wp_login', 'identify_user', 10, 2 );

function identify_user( $user_login, $user ) {
    // 构造要发送的用户数据数组
    $user_data = array(
        'user_id'    => $user->ID,
        'user_email' => $user->user_email
    );
    $user_json = json_encode( $user_data );

    // 初始化CURL请求(建议加上http/https协议头,避免URL解析错误)
    $curl = curl_init( 'https://myApp.com/endpoint' );
    if ( !$curl ) {
        error_log( 'CURL初始化失败:' . curl_error( $curl ) );
        return;
    }

    // 设置CURL请求选项
    curl_setopt( $curl, CURLOPT_POST, true );
    curl_setopt( $curl, CURLOPT_POSTFIELDS, $user_json );
    curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json' ) );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, true ); // 生产环境建议开启SSL验证,防止请求被劫持
    curl_setopt( $curl, CURLOPT_TIMEOUT, 10 ); // 设置超时时间,避免接口响应慢阻塞WordPress登录流程

    // 执行请求并获取响应
    $result = curl_exec( $curl );
    $http_status = curl_getinfo( $curl, CURLINFO_HTTP_CODE );

    // 错误与响应处理
    if ( curl_errno( $curl ) ) {
        $error_msg = curl_error( $curl );
        error_log( '用户信息POST请求失败:' . $error_msg );
    } else {
        // 根据接口返回的HTTP状态码判断请求结果
        if ( $http_status === 200 ) {
            error_log( '用户信息已成功发送到接口,响应内容:' . $result );
        } else {
            error_log( '接口返回非成功状态码:' . $http_status . ',响应内容:' . $result );
        }
    }

    // 关闭CURL资源,释放内存
    curl_close( $curl );
}

关键细节说明

  • 钩子绑定:使用wp_login动作钩子,这是WordPress官方提供的登录触发钩子,会在用户成功登录后自动执行绑定的函数,同时传递登录用户名和WP_User对象两个参数,刚好满足我们获取用户ID和邮箱的需求
  • CURL优化:添加了协议头、SSL验证、超时设置,既保证了请求的安全性,也避免了因接口问题导致WordPress登录流程卡顿
  • 日志记录:用error_log记录请求状态,开启WP_DEBUG后可以在wp-content/debug.log文件中查看这些日志,方便后续排查问题
  • 数据安全:确保你的目标接口是可信的,避免用户敏感信息泄露;如果接口需要身份验证,记得添加对应的请求头或认证参数

内容的提问来源于stack exchange,提问作者Yale Newman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:22:44