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

使用WordPress REST API创建文章时内容被截断,如何解决?

Kadence区块属性通过REST API传入后被移除的原因及解决办法

原因

  1. 区块注释JSON格式错误:WordPress区块的属性注释要求使用双引号包裹JSON键值对,你代码里用了单引号,导致WP区块解析器无法识别属性,直接丢弃所有自定义配置,只保留基础区块类型。
  2. REST API内容过滤机制:WP REST API处理content字段时,会经过wp_kses_post和区块清理逻辑,不符合规范的内容会被自动清理,未被正确识别的区块属性会被移除。

解决办法

1. 修正区块注释的JSON格式

将区块注释中的单引号替换为双引号,同时在PHP字符串中正确转义(或使用HEREDOC语法简化):

// 方式1:转义双引号
$my_post = 
"<!-- wp:kadence/rowlayout {\"uniqueID\":\"5331_605d8b-3f\",\"columns\":1,\"colLayout\":\"equal\",\"minHeight\":380,\"bgImg\":\"http://wordlets.si/media/4-banner8.jpg\",\"bgImgPosition\":\"48% 42%\",\"align\":\"full\",\"minHeightMobile\":180,\"mobilePadding\":[25,'','',''],\"kbVersion\":2} --> 
 <!-- wp:kadence/column {\"borderWidth\":['','','',''],\"uniqueID\":\"5331_0edd64-7f\",\"kbVersion\":2,\"className\":\"inner-column-1\"} --> 
 <div class='wp-block-kadence-column kadence-column5331_0edd64-7f inner-column-1'>
     <div class='kt-inside-inner-col'></div>
 </div>";

// 方式2:使用HEREDOC(无需转义双引号)
$my_post = <<<BLOCK_CONTENT
<!-- wp:kadence/rowlayout {"uniqueID":"5331_605d8b-3f","columns":1,"colLayout":"equal","minHeight":380,"bgImg":"http://wordlets.si/media/4-banner8.jpg","bgImgPosition":"48% 42%","align":"full","minHeightMobile":180,"mobilePadding":[25,'','',''],"kbVersion":2} --> 
 <!-- wp:kadence/column {"borderWidth":['','','',''],"uniqueID":"5331_0edd64-7f","kbVersion":2,"className":"inner-column-1"} --> 
 <div class='wp-block-kadence-column kadence-column5331_0edd64-7f inner-column-1'>
     <div class='kt-inside-inner-col'></div>
 </div>
BLOCK_CONTENT;

$data = [
    'title'   => 'My Post Title',
    'content' => $my_post,
    'status'  => 'draft',
];

$response = Http::withBasicAuth($username, $password)
    ->post('https://mywp.xyz/wp-json/wp/v2/posts', $data);

2. 禁用REST API的内容过滤

如果格式修正后问题仍存在,可在WordPress后台的主题functions.php或自定义插件中添加以下代码,跳过content字段的自动清理:

add_filter('rest_pre_insert_post', function($prepared_post, $request, $creating) {
    if ($creating && isset($request['content'])) {
        $prepared_post->post_content = $request['content'];
    }
    return $prepared_post;
}, 10, 3);

3. 验证Kadence插件配置

确保Kadence插件为最新版本,所有自定义区块属性已正确注册到WordPress区块系统中。若Kadence未注册这些属性,WP会判定为无效属性并移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:48:11