我正在使用 https://www.npmjs.com/package/wpapi 与我的 Wordpress 站点进行交互。
我安装了 https://www.advancedcustomfields.com/ 和 https://wordpress.org/plugins/acf-to-rest-api/ 插件。
我正在尝试使用 wpapi 更新帖子的属性“main_sidebar”的 value。这是当前工作代码,用于获取和记录帖子 62542 的“main_sidebar”的内容:
const WPAPI = require ('wpapi');
var wpdev = new WPAPI ({
endpoint: '..../wp-json',
username: '...',
password: '...'
});
wpdev.acfAPI = wpdev.registerRoute("acf/v3", "/posts/(?P<id>[\\d]+)/?(?P<field>[\\w\\-\\_]+)?", {
params: [ 'main_sidebar' ]
});
main();
async function main () {
let resp = await wpdev.acfAPI().id(62542).field("main_sidebar").get();
console.log(resp);
console.log(JSON.stringify(resp));
}
我不知道如何设置该属性的 value 。我不明白我应该如何与它互动。我也尝试在实际帖子上更新它,但没有运气:
await wpdev.posts().id(...).update({
data: { "acf": { "main_sidebar": "test value" } }
});
如果由于某种原因无法使用 wpapi 完成此操作,我愿意以其他方式进行操作。我只需要为每个帖子更新这个特定的属性。
编辑:
我相信我可能一直在尝试更新错误的资源。这是我现在正在尝试的:
let result = await wpdev.posts().id(117925).auth().update({
data: {
"acf": {
"main_sidebar": "test"
}
},
status: 'publish'
});
console.log(result);
这不会引发错误,“结果”只是发布数据。它不会更新帖子。现在我有两倍的困惑。
回答1
弄清楚了。这是工作代码。您应该能够将“main_sidebar”替换为 acf 设置的任何字段的名称。
let result = await wpdev.posts().id(117925).auth().update({
"fields": {
"main_sidebar": "test"
},
status: 'publish'
});
console.log(result);