通过JSON访问WordPress数据会为某些键提供HTML数据

时间:2020-08-08 作者:ansh sachdeva

我正在为一个网站位于WordPress中的客户端创建一个Android应用程序。我想访问这些帖子,但我不知道要访问哪个API。我在搜索后发现的一个API是https://www.<mysite>.com/wp-json/wp/v2/posts. 这提供了大量的键值对,所以我想通过这个URL访问这个网站。但对于一个特定的content 键,这将提供以下输出:

 "content": {
    "rendered": "<p>&nbsp;</p>\\r\\n\\r\\n<p>The next class for &#8220;MICROVITA&#8221; will be on &#8220;Aug 07th, 2020 at 8:00 PM IST / 10:30 AM EST on &#8220;MicroVita Science(माइक्रोवाइटा विषय समापन )&#8221; by Ac.Vimalananda Avt. </p>\\r\\n\\r\\n\\r\\n\\r\\n\\n<div class=\\"dpn-zvc-shortcode-op-wrapper\\">\\n\\t        <table class=\\"vczapi-shortcode-meeting-table\\">\\n            <tr class=\\"vczapi-shortcode-meeting-table--row1\\">\\n                <td>Meeting ID</td>\\n                <td>000000000</td>\\n            </tr>\\n            <tr class=\\"vczapi-shortcode-meeting-table--row2\\">..."
}

我不知道如何从这样的HTML内容中检索重要信息。也许这是一个更适合其他堆栈社区的问题,但我想知道的是,这是否是WordPress站点API的预期行为?或者是否有其他API或插件可以给我更好的响应?

总结如下:

哪个WordPress API可以为我提供所有文章的JSON列表

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

哪个wordpress api可以为我提供所有文章的json列表您已经使用了正确的API,请记住它已分页,因此需要在单独的请求中请求第二/第三页/etc。它将传递http头中有多少APGE

我发现一个特定的api正在执行与第(1)点相同的任务。这是标准的吗通过查询REST API列出帖子wp-json/wp/v2/posts. 其他帖子类型存在其他端点,例如pages

将html内容直接放在其json键值对中是否是wordpress API的标准行为是的,如果要显示帖子,则需要帖子内容。否则,您将如何显示帖子?

我认为我们看到的是一种误解。You never stated what it was that you wanted, just that it\'s somewhere in the content HTML. 所以我认为发生了这样的事情:

帖子使用一个短代码来显示从其他地方获取的数据。您的应用程序正在通过REST API获取帖子。您正在查看短代码输出,并想知道如何在Android应用程序中提取数据您可以使用android类库解析HTML,假设它是一致的,或者,您可以查看短代码从何处获取信息并直接访问它。

遗憾的是,您从未真正说过您想要的数据是什么,我们也不知道生成该输出的短代码是什么。如果无法访问短代码的实现,就不可能说出如何公开信息。短代码是一个PHP函数,它在名称下注册,并交换字符串,如[shortcode] 使用HTML标记。PHP函数可能从post meta中提取数据,或者访问自定义数据库表,甚至向远程API发出HTTP请求,因此不可能有通用的解决方案。

dpn-zvc-shortcode-op-wrapper 给我们一个关于短代码可能是什么的线索,但你需要看看短代码是如何工作的才能知道这一点,而你没有提到短代码的名称。一个快速的google显示,HTML类出现在Zoom插件的支持请求中,因此您需要通过他们的支持路线,因为第三方插件支持在这里是非主题的。

SO网友:Marcello Curto

这是预期的WordPress行为"E;“内容”;数据是WordPress帖子内容数据,与帖子中添加的所有HTML标记一起存储。

我不确定您试图检索哪些信息,但我认为HTML标记可能对您有利。

如果要检索会议ID,则可以过滤所有;tr“;元素,并始终选择第二个“;td“;那是在里面。

<table class=\\"vczapi-shortcode-meeting-table\\">
  <tr class=\\"vczapi-shortcode-meeting-table--row1\\">
    <td>Meeting ID</td>
    <td>000000000</td>
  </tr>
</table>
看起来WordPress插件通过一个短代码将这些数据添加到帖子内容中。如果幸运的话,所有这些数据都以结构化的方式单独存储在数据库中。如果是这样,您可能能够将该数据公开给WordPress API,然后直接访问它,而不是通过HTML标记进行过滤。