通过WordPress Rest API创建带换行评论的问题求助
解决WordPress REST API评论换行不生效问题
问题核心
你提交的文本里的\n是字符串字面量,WordPress不会自动解析为换行;同时直接把参数拼在URL中,会导致换行符被错误编码或无法被接口识别。
处理方案
1. 转换换行符为HTML格式
用PHP内置的nl2br()函数,可将字符串中的\n直接转换为HTML的<br>标签,WordPress渲染评论时会自动显示为换行。如果需要和网页端提交的段落效果完全一致,若你的环境能加载WordPress函数库,也可以调用wpautop()函数,它会把换行转换为<p>段落和<br>标签。
2. 修正请求参数传递方式
WP REST API的评论创建接口要求POST参数放在请求体中,而非URL拼接,这样能避免URL编码导致的字符丢失或解析错误。
修改后的代码示例
// 获取原始评论内容并处理换行 $rawContent = $this->request->getVar('content'); // 若内容中的\n是转义后的(即实际为\\n),先去除转义 $rawContent = stripslashes($rawContent); // 转换为HTML换行格式 $processedContent = nl2br($rawContent); // 如需完全匹配网页端段落效果,替换为wpautop(需加载WP函数库) // $processedContent = wpautop($rawContent); // 构造请求参数数组 $postData = [ 'post' => $this->request->getVar('eventId'), 'content' => $processedContent ]; // 追加作者名称(如果存在) if ($this->request->getVar('authorName')) { $postData['author_name'] = $this->request->getVar('authorName'); } try { $apiComment = $curl->post('https://xxxx.xx/wp-json/wp/v2/comments', [ 'headers' => [ 'Accept' => 'application/json', 'Content-Type' => 'application/json' ], 'json' => $postData // 以JSON格式传递请求体参数 ]); } catch (Exception $e) { // 这里添加异常处理逻辑 }
内容的提问来源于stack exchange,提问作者Lidia K.
相关产品推荐
相关产品推荐

