【问题标题】:Adding posts with media using Wordpress API and Javascript library使用 Wordpress API 和 Javascript 库添加带有媒体的帖子
【发布时间】:2020-04-15 03:06:05
【问题描述】:

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

我进行了一些搜索,并找到了使用 Wordpress XML-RPC 协议的 node-wpapi 包。一切正常,除了发布带有媒体或特色图片的文章。

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
});

它会创建帖子和上传媒体,但不会创建带有媒体的帖子。

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

【问题讨论】:

  • 我不熟悉您使用的节点库,但我确实有一个用于 Wordpress API 的 Postman 集合:explore.postman.com/templates/3073/wordpress-api-v2
  • 我看不到您的异步函数在哪里,您也可以调用这两个函数来创建它们。这是所有的代码吗?
  • 这是一篇关于如何使用库的好文章:wp-api.org/node-wpapi/guides/2016/08/15/… 我看到你提出了两个请求。一个用于创建上传帖子,另一个用于创建帖子。我没有看到将两者关联的请求?
  • 既然您同时创建帖子和媒体,您是否尝试过先创建帖子,然后直接使用post字段创建媒体(而不是单独更新) ?我不知道为什么它在功能上会有任何不同,但它可能值得一试(并且它会保存一个请求)。
  • @RobbTraister 颠倒调用顺序并没有奏效。

标签: javascript wordpress xml-rpc posts


【解决方案1】:

要在创建帖子时设置特色图片,只需提供featured_media 参数即可。示例:

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
})

要将图片插入帖子内容,您可以在content 参数中添加<img> 标签。示例:

wp.media().file("test.jpg").create({
    title: "Media Title"
}).then(media => {
    return wp.posts().create({
        title: "Hi",
        content: `<img src="${media.source_url}" />`
    })
})

这两项都已针对 WordPress 5.3.2 进行了测试。 我希望这会有所帮助!

【讨论】:

  • 我收到此错误:错误:.field(name, val) val 不能为空。它来自wp.media().file("test.jpg").create 函数。更多细节在这里:pastebin.com/vyTTs0Q0
  • 嗯...它对我有用,所以我建议您运行 npm update 以确保您使用的是最新版本的 superagent(引发错误的模块)跨度>
  • 您可能没有向create() 函数传递任何内容。这是我在不看其他代码的情况下能做的最好的事情。
  • 奇怪的是,如果我只运行帖子创建(使用从这里获取的代码github.com/WP-API/node-wpapi#creating-posts),它会返回现有帖子的列表,而不是创建新帖子。
  • 已解决,这是一个身份验证问题,我修复了在.htaccess 文件中添加一行:github.com/WordPress/application-passwords/wiki/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-07
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2016-09-15
相关资源
最近更新 更多