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

如何解决WordPress中PHP会话干扰REST API的运行时错误?

解决WordPress PHP会话干扰REST API/环回请求的问题

方法1:手动在请求前关闭会话

找到主题或插件里调用session_start()的代码块,在发起任何HTTP请求(比如wp_remote_get、wp_remote_post这类WordPress内置HTTP函数)之前,插入session_write_close();。举个例子:

// 先关闭会话,避免冲突
session_write_close();
// 再发起HTTP请求
$response = wp_remote_get('https://your-target-url.com');

要是请求完成后还得用会话,之后再重新调用session_start();就行,但得确保后续没其他HTTP请求会冲突。

方法2:用WordPress钩子自动管理会话

借助http_api_curl钩子,在CURL请求发起前自动关闭会话,请求结束后按需恢复。把下面这段代码加到主题的functions.php或者自定义插件里:

// 请求发起前关闭会话
add_action('http_api_curl', function($handle) {
    if (session_status() === PHP_SESSION_ACTIVE) {
        session_write_close();
    }
});

// 可选:请求完成后恢复会话
add_action('http_api_debug', function($response, $context, $class, $args, $url) {
    if (session_status() === PHP_SESSION_NONE) {
        session_start();
    }
}, 10, 5);

方法3:排查并修复不规范的会话调用

逐个检查激活的插件和当前主题的代码:

  • 别在全局范围调用session_start(),只在需要的时候开启,用完立刻关闭
  • 要是必须长时间保持会话,一定要在发起REST API或环回请求前主动关闭会话

方法4:禁用不必要的会话

如果某些插件/主题的会话是多余的,直接删掉对应的session_start()调用就行,但删完要测试功能是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:43:15