【发布时间】:2018-12-02 13:51:14
【问题描述】:
我有 2 个 wordpress 博客网站。一个站点具有自定义帖子类型。我想将此自定义帖子类型中的内容显示到我的另一个 wordpress 网站?
如何做到这一点?
【问题讨论】:
标签: wordpress custom-post-type
我有 2 个 wordpress 博客网站。一个站点具有自定义帖子类型。我想将此自定义帖子类型中的内容显示到我的另一个 wordpress 网站?
如何做到这一点?
【问题讨论】:
标签: wordpress custom-post-type
在带有 CPT 的站点上,确保 CPT 暴露给 REST API(您可以在 CPT 代码中执行此操作),然后使用 REST API 将它们拉入您的其他站点https://developer.wordpress.org/rest-api/
【讨论】:
Ashley Brown 的回答在技术上是正确的,但对于您的问题非常简单,文档会有些混乱,因为文档描述了一般更复杂的 REST API 访问。幸运的是,您的案例非常简单,只需要很少的代码。
首先,WordPress REST API 将返回“渲染”的帖子内容。这个“渲染”的帖子内容是将过滤器“the_content”应用于帖子内容的结果。特别是,它可能包含 CSS 选择器。重要的是,外部站点还加载 CPT 使用的本地站点的 CSS 文件。这可能意味着如果 CPT 来自插件并且该插件加载 CSS 文件,您可能需要在外部站点上安装该插件。
其次,使用您的浏览器通过 REST API 从本机站点检索 URL。例如,尝试以下操作:
http://localhost/wp-json/wp/v2/posts/1
这将返回带有字段 content.rendered 的 JSON,在上面的 URL 中如下所示:
<p>line first…</p>\n<p> </p>\n<p>AAA return ‘hello’ . ‘ ‘ . ‘world’; ZZZ</p>\n<p> </p>\n<p>line last…</p>\n
这只是原始的 HTML。
因此,您可以使用 AJAX 请求来检索 JSON 对象并从该对象中提取 content.rendered 字段。然后使用 jQuery.append() (或类似的东西)将该 HTML 插入到您的 DOM 中。
还有一件事必须启用 CPT 才能进行 REST 访问。请参阅我的post,了解如何执行此操作。
附录
我突然想到有人会为这种基本功能编写一个插件。我找到了这个REST API Post Embeds。我对这个插件一无所知,也许还有其他更好的插件,但是这个功能是如此基本且易于实现,必须有一个插件来做到这一点。
【讨论】: