javascript - 如何使用 node-WPAPI 更新 Wordpress 上的 Advanced Custom Fields?

我正在使用 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);

相似文章

javascript - 从中心开始的底线动画

我想在下拉菜单中设置底线的样式,以便当我单击它时它与输入的颜色相同,即专注于该颜色,但我读到焦点不适用于div,还有其他选项,但是他们不适合我,我也希望我的下拉菜单和输入在悬停时在底线有这个动画:ht...

c - 无法删除C中双向链表的重复数据

我在从双向链表中删除重复数据时遇到问题。所以这个列表的data元素是一个数字数组。我想用这个delete_duplicates代码删除重复数据的节点。我使用以下print_list函数来打印列表。该函...

javascript - 在货币之间切换

我长期以来一直在摆弄这个问题,即如何实现它以便在货币之间进行切换。我需要第一个选择有EUR、USD、GBP,第二个选择有UAH、GBP、EUR,但是如果我在第一个选择中选择EUR,那么第二个选择应该不...

随机推荐

最新文章