使用Wordpress API和Javascript库添加媒体帖子

使用Wordpress API和Javascript库添加媒体帖子,javascript,wordpress,xml-rpc,posts,Javascript,Wordpress,Xml Rpc,Posts,我想用API在我的Wordpress博客上发表文章。 因为我在一个Javascript应用程序中,所以我会使用这种语言来实现这一点 我做了一些搜索,找到了使用WordPressXML-RPC协议的包。除了发布带有媒体或特色图片的文章外,一切正常 const responseUploadImage = await wp.media() .file('./tempImage.jpg') .create({ title: 'My awesome image',

我想用API在我的Wordpress博客上发表文章。 因为我在一个Javascript应用程序中,所以我会使用这种语言来实现这一点

我做了一些搜索,找到了使用WordPressXML-RPC协议的包。除了发布带有媒体或特色图片的文章外,一切正常

const responseUploadImage = await wp.media()
    .file('./tempImage.jpg')
    .create({
        title: 'My awesome image',
        alt_text: 'an image of something awesome',
        caption: 'This is the caption text',
        description: 'More explanatory information'
    });

const responsePostCreation = await wp.posts().create({
    title: 'Your Post Title',
    content: 'Your post content',
    // status: 'publish'
});

const response = await wp.media().id(responseUploadImage.id).update({
    post: responsePostCreation.id
});
它确实创建post和上载媒体,但它不使用媒体创建post


您知道使用JS库创建媒体和特色图片帖子的替代方法还是更好的方法吗?

要在创建帖子时设置特色图片,只需提供一个
特色图片
参数。例如:

wp.media().file("test.jpg").create({
    title: "Media Title"
}).then(media => {
    return wp.posts().create({
        title: "Your Post Title",
        content: "Fancy",
        featured_media: media.id
    })
}).then(post => {
    // Success
}).catch(() => {
    // Error
})
要将图像插入到帖子内容中,您可以输入
`
})
})
这两个版本都已经过WordPress 5.3.2的测试。
我希望这有帮助

我不熟悉您正在使用的节点库,但我这里有一个Wordpress API的Postman集合:我不知道您的异步函数在哪里,您可以调用这两个函数来创建它们。这就是所有的代码吗?这是一篇很好的关于如何使用库的文章:我看到您提出了两个应该提出的请求。一个用来创建上传帖子,另一个用来创建帖子。我没有看到将两者关联的请求?因为您同时创建帖子和媒体,您是否尝试过先创建帖子,然后直接使用
post
字段创建媒体(而不是单独进行更新)?我不知道为什么它在功能上会有任何不同,但可能值得一试(这将保存一个请求)。@RobbTraister反转调用顺序并没有起到作用。我收到以下错误:错误:。字段(名称,val)val不能为空。它来自
wp.media().file(“test.jpg”).create
函数。更多细节在这里:嗯。。。它对我有效,因此我建议运行
npm update
,以确保您使用的是最新版本的
superagent
(引发错误的模块)。您可能没有向
create()
函数传递任何内容。这是我在看不到其他代码的情况下能做的最好的事情。奇怪的是,如果我只运行post creation(使用从这里获取的代码),它会返回现有帖子的列表,而不是创建新帖子。解决了,我修复了身份验证问题,在
.htaccess
文件中添加了一行:
wp.media().file("test.jpg").create({
    title: "Media Title"
}).then(media => {
    return wp.posts().create({
        title: "Hi",
        content: `<img src="${media.source_url}" />`
    })
})