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

在POST方法响应的if语句中放置WordPress PHP短代码钩子是否正确?

方案问题说明与修正方案

现有代码存在3个核心问题,无法实现预期效果:

  • 「短代码注册时机错误」:wpforms_process_complete 是表单提交触发的动作钩子,仅在表单提交的POST请求生命周期内生效,而用户访问前端页面渲染短代码是独立的GET请求,该请求下你注册的短代码完全不会被识别。
  • 「变量作用域与跨请求数据丢失」:你在钩子回调内定义的短代码函数无法直接读取父函数的$response局部变量,且单次请求结束后所有临时变量都会清空,即使短代码能注册,下次页面加载时也拿不到之前API返回的结果。
  • 「动作钩子返回值无效」:wpforms_process_complete 是动作钩子,你返回的错误信息不会输出到前端页面,没有实际作用。

正确实现思路

你需要把API请求成功的响应结果做持久化临时存储,再通过全局注册的短代码读取存储内容展示,这里推荐用Session结合用户标识存储,避免多用户数据串扰:

修正后可运行代码

// 全局注册短代码,不要放在表单钩子内部
add_shortcode("wpairform_api_response", "wpairform_api_response_func");
function wpairform_api_response_func($atts) {
    // 从当前用户session读取临时存储的API响应
    if (!session_id()) session_start();
    $response = empty($_SESSION['wpairform_api_success_res']) ? '' : $_SESSION['wpairform_api_success_res'];
    // 读取后清空存储,避免重复展示旧结果
    unset($_SESSION['wpairform_api_success_res']);
    // 转义输出避免XSS风险
    return esc_html($response);
}

add_action('wpforms_process_complete', 'wpairform_api_sender', 10, 4);
function wpairform_api_sender($fields, $entry, $form_data, $entry_id) {
    if ($form_data['id'] != 10240) return;

    $api_url = 'https://hook.integromat.com/tzeseygrctyxjbsxfp7psbbkt40j8tc2';
    $body = array(
        'text' => $fields['1']['value'],
    );
    $response = wp_remote_post($api_url, array('body' => $body));
    
    if (!session_id()) session_start();
    if (is_wp_error($response)) {
        // 错误信息也可存入session,你可以扩展短代码逻辑展示错误提示
        $_SESSION['wpairform_api_error_res'] = '请求出错:' . $response->get_error_message();
        return;
    }

    $res_code = wp_remote_retrieve_response_code($response);
    if ($res_code === 200) {
        // 成功响应存入用户session
        $_SESSION['wpairform_api_success_res'] = wp_remote_retrieve_body($response);
    } else {
        $_SESSION['wpairform_api_error_res'] = '请求失败,状态码:' . $res_code;
    }
}

使用说明

你只需要把[wpairform_api_response]短代码放在表单所在页面或者提交后跳转的落地页位置,用户提交表单后就能看到API返回的成功响应内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 10:36:03