如何将Handsontable数据按指定格式提交至WordPress REST API?
解决Handsontable数据适配WordPress REST API格式的问题
问题出在你当前提交的是数组格式的数据,但WordPress REST API要求的是带明确字段名的键值对对象。你只需要把Handsontable返回的数组元素映射到title、content、status这几个指定字段上即可。
直接修改你的代码如下:
$('#publish').on('click',function(e){ // 获取第一行的数组数据 const rowData = hot.getDataAtRow(0); // 将数组转换为WP API需要的结构化对象 const postPayload = { title: rowData[0], content: rowData[1], status: rowData[2] }; // 转为JSON字符串 const data = JSON.stringify(postPayload); $.ajax({ url: 'domain.com/staging/wp-json/wp/v2/posts/', method: 'POST', crossDomain: true, dataType: 'json', contentType: 'application/json', data: data, beforeSend : function(xhr) { xhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce ); }, success: function( data ) { console.log( data ); }, error: function ( error ) { console.log( error ); } }); });
关键说明:
- 先通过
hot.getDataAtRow(0)拿到数组["John Doe","Sample text","publish"] - 手动创建
postPayload对象,把数组的每个元素对应到WP API要求的字段:- 数组第1个元素(索引0)对应
title - 数组第2个元素(索引1)对应
content - 数组第3个元素(索引2)对应
status
- 数组第1个元素(索引0)对应
- 最后再将这个对象转为JSON字符串提交,这样就和你手动测试的格式完全一致了
额外优化建议:
如果担心Handsontable的列顺序可能变动,或者数组元素可能缺失,可以加个默认值处理,避免提交空字段:
const postPayload = { title: rowData[0] || '未命名标题', content: rowData[1] || '无内容', status: rowData[2] || 'draft' // 默认设为草稿状态,避免误发布 };
内容的提问来源于stack exchange,提问作者Hendra Setiawan
相关产品推荐
相关产品推荐

