WordPress REST API返回HTML内容时URL转义与引号问题
解决WordPress REST API返回text/html时的引号和斜杠转义问题
我来帮你搞定这个问题!你遇到的引号和斜杠转义问题,根源在于WP_REST_Response这个类的默认行为:它会自动把你传入的内容当作JSON数据来序列化处理,所以普通字符串会被包裹成双引号,特殊字符(比如斜杠)也会被转义。
要解决这个问题,有两种简单有效的方法:
方法一:使用基础的WP_Http_Response类
WP_REST_Response是WP_Http_Response的子类,额外添加了REST API的序列化逻辑。如果你只需要返回纯文本/html内容,直接用父类WP_Http_Response就能绕过自动序列化:
// 构建响应 $response = new WP_Http_Response(); $response->set_status(200); $response->set_headers(array('content-type' => 'text/html; charset=utf-8')); $response->set_content("OK \n ImageSendURL={$options['url']}"); return $response;
方法二:手动禁用WP_REST_Response的序列化
如果你坚持要用WP_REST_Response,可以通过清空要序列化的数据并直接设置响应内容来绕过自动序列化:
$response = new WP_REST_Response(null, 200, array('content-type' => 'text/html; charset=utf-8')); // 直接设置原始响应内容,跳过序列化 $response->set_content("OK \n ImageSendURL={$options['url']}"); return $response;
这样处理后,返回的内容就是你预期的纯文本格式:
OK
ImageSendURL=www.yourdomain.xxx/Plugin/DownloadOrders
不会再出现首尾双引号,URL里的斜杠也不会被转义了。
内容的提问来源于stack exchange,提问作者SumanP89
相关产品推荐
相关产品推荐

