使用 WP Rest API javascript 客户端 (backbonejs) 获取自定义 post 类型的 wordpress posts
Fetch wordpress posts of custom post type using the WP Rest API javascript Client (backbonejs)
我正在使用 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',
...
它们在直接访问(postman,jquery,浏览器地址栏...)时完美运行。
在复制官方 npm wpapi 模块的示例时,它们在我的安装中也按预期工作。
问题是我不知道如何使用 wp 提供的 clientjs 获取自定义 post 类型 的 post休息 api 社区。我没有在简单的节点项目上找到任何工作示例。在官方文档中没有关于如何实现这一点的具体信息(对于具有我的 js 技能的人:))。
我已经试过了:
https://github.com/WP-API/WP-API/issues/1299
并关注:
https://bay-a.co.uk/wordpress-tips/wp-api-v2-tips/
但我无法让它工作(例如:无法读取未定义的 属性 'models')。
感谢您的宝贵时间。我想这是很多人已经做过的事情...
编辑(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 属性 'models' of undefined。
请注意,我对 url 进行了硬编码,因为 wpApiSettings 常量也给了我未定义的错误...
感谢 sdgluck 用户 github,他提供了解决方案。
https://github.com/WP-API/node-wpapi/issues/283
我认为 node-wpapi 是一个包含 wp rest api 的 backbone.js 客户端的节点包,但它不是。所以我一直在将 backbonejs 客户端函数应用于已安装的 node-wpapi 包时出错。
希望对初学者有所帮助。
这是对上述 GitHub 问题引起的文档的直接 link:http://wp-api.org/node-wpapi/custom-routes/ 该页面记录了如何使用 wpapi 库的 registerRoute
方法来设置为您自己的自定义 post 类型设置自定义端点处理程序工厂。
我正在使用 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',
...
它们在直接访问(postman,jquery,浏览器地址栏...)时完美运行。
在复制官方 npm wpapi 模块的示例时,它们在我的安装中也按预期工作。
问题是我不知道如何使用 wp 提供的 clientjs 获取自定义 post 类型 的 post休息 api 社区。我没有在简单的节点项目上找到任何工作示例。在官方文档中没有关于如何实现这一点的具体信息(对于具有我的 js 技能的人:))。
我已经试过了:
https://github.com/WP-API/WP-API/issues/1299
并关注:
https://bay-a.co.uk/wordpress-tips/wp-api-v2-tips/
但我无法让它工作(例如:无法读取未定义的 属性 'models')。
感谢您的宝贵时间。我想这是很多人已经做过的事情...
编辑(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 属性 'models' of undefined。 请注意,我对 url 进行了硬编码,因为 wpApiSettings 常量也给了我未定义的错误...
感谢 sdgluck 用户 github,他提供了解决方案。
https://github.com/WP-API/node-wpapi/issues/283
我认为 node-wpapi 是一个包含 wp rest api 的 backbone.js 客户端的节点包,但它不是。所以我一直在将 backbonejs 客户端函数应用于已安装的 node-wpapi 包时出错。
希望对初学者有所帮助。
这是对上述 GitHub 问题引起的文档的直接 link:http://wp-api.org/node-wpapi/custom-routes/ 该页面记录了如何使用 wpapi 库的 registerRoute
方法来设置为您自己的自定义 post 类型设置自定义端点处理程序工厂。