使用Wordpress API和Javascript库添加媒体帖子
我想用API在我的Wordpress博客上发表文章。 因为我在一个Javascript应用程序中,所以我会使用这种语言来实现这一点 我做了一些搜索,找到了使用WordPressXML-RPC协议的包。除了发布带有媒体或特色图片的文章外,一切正常使用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',
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}" />`
})
})