使用 WP Rest API javascript Client (backbonejs) 获取自定义帖子类型的 wordpress 帖子

Posted

技术标签:

【中文标题】使用 WP Rest API javascript Client (backbonejs) 获取自定义帖子类型的 wordpress 帖子【英文标题】:Fetch wordpress posts of custom post type using the WP Rest API javascript Client (backbonejs) 【发布时间】:2017-05-10 12:22:35 【问题描述】:

我正在使用 WP REST API 开发一个 reactjs 后端。我现在正在尝试利用内置的 javascript 客户端,所以我在我的项目中安装了 wpapi 节点包 (https://www.npmjs.com/package/wpapi)。

我已经为我的 CPT 启用了相应的行为和端点:

...
'show_in_rest'       => true,
'rest_base'          => 'mycptslug',//sustituye a posts
'rest_controller_class' => 'WP_REST_Posts_Controller',
...

在直接访问(邮递员、jquery、浏览器地址栏...)时它们工作得很好。

在复制官方 npm wpapi 模块的示例时,它们在我的安装中也可以正常工作。

问题是我不知道如何使用 wp rest api 社区提供的 clientjs 获取 我的自定义帖子类型的帖子。我没有在一个简单的节点项目上找到任何工作示例。在官方文档中没有关于如何实现这一点的具体信息(对于具有我的 js 技能的人:))。

我已经试过了:

https://github.com/WP-API/WP-API/issues/1299

然后跟随:

https://bay-a.co.uk/wordpress-tips/wp-api-v2-tips/

但我无法让它工作(例如:无法读取未定义的属性“模型”)。

感谢您的宝贵时间。我想这是很多人已经做过的事情......

编辑(由 Andreyco 建议):我的代码就像 github 问题中指出的那样:

var WPAPI = require('wpapi' );
var wp = new WPAPI( endpoint: 'http://myurl/wp-json');
var pI = wp.api.models.Post.extend(
                  urlRoot: 'http://myurl/wp-json/wp/v2/' + '/pi',
                             defaults: 
                                 type: 'my-cpt'
                             
                         );
var MyPI = wp.api.collections.Posts.extend(
                           url: 'http://myurl/wp-json/wp/v2/' + 'pis',
                             model: pI
                         );

var thePI = new MyPI();

thePI.fetch(
             filter: 
                      nopaging: true
                      
            ).done( function() 
                             thePI.each( function( mypi ) 
                                 console.log( mypi.attributes );
                             );
                         );

但它给出了以下错误:Uncaught TypeError: Cannot read property 'models' of undefined。 请注意,我对网址进行了硬编码,因为 wpApiSettings 常量也给了我未定义的错误...

【问题讨论】:

向我们展示用于从 WP API 获取数据的代码。 【参考方案1】:

这里是上述 GitHub 问题产生的文档的直接链接:http://wp-api.org/node-wpapi/custom-routes/ 该页面记录了如何使用 wpapi 库的 registerRoute 方法为您自己的自定义帖子类型设置自定义端点处理程序工厂。

【讨论】:

【参考方案2】:

感谢 github 中的 sdgluck 用户提供了解决方案。

https://github.com/WP-API/node-wpapi/issues/283

我以为node-wpapi是一个包含wp rest api的backbone.js客户端的node包,其实不是。因此,将backbonejs客户端功能应用于已安装的node-wpapi包时,我不断收到错误消息。

希望它对任何初学者都有帮助。

【讨论】:

以上是关于使用 WP Rest API javascript Client (backbonejs) 获取自定义帖子类型的 wordpress 帖子的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress REST API (wp-api) 404 错误:无法访问 WordPress REST API

Wordpress REST API:如何在 WP REST API JSON 文件中获取“纯文字”内容?

如何使用 WP Rest API v2 创建评论?

使用 WP-API 节点模块时如何限制返回的 Wordpress REST-API 字段

禁用 WP REST API 的默认路由

WP REST API 从帖子类型中获取帖子