古腾堡自定义区块获取所有帖子

时间:2019-08-05 作者:Spedwards

我正在尝试创建自定义块,但我需要一些帮助。

我正在尝试设置<select> 在列出所有帖子的编辑器中。我在api方面还不是很有经验,但在阅读了文档之后,下面的一行应该可以得到帖子。

wp.api.collections.Posts().fetch()
然而,问题是,我得到了一个很好的错误:

TypeError:无法读取未定义的属性“collections”

我怎样才能在编辑器中获得所有帖子的列表供选择,还是仅仅超出了可能的范围?

2 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

除了加载wp-api 如上所述的脚本here:

wp_enqueue_script( \'wp-api\' ); // or use below when enqueueing as dependency
//wp_enqueue_script( \'my_script\', \'path/to/my/script\', array( \'wp-api\' ) );
您还应该知道,每个集合都是一个函数(相当于PHP中的一个类),因此您需要使用new 关键字来实例化集合。Example:

var postsCollection = new wp.api.collections.Posts();
postsCollection.fetch( {
    data: { per_page: 2 }
} ).done( function( posts ){
    console.log( \'Title of the first item is: \' + posts[0].title.rendered );
} );
然而,对于Gutenberg,您可能希望或者可以使用api-fetch/wp.apiFetch package:

wp-api-fetch 脚本:

wp_enqueue_script( \'wp-api-fetch\' ); // or use below when enqueueing as dependency
//wp_enqueue_script( \'my_script\', \'path/to/my/script\', array( \'wp-api-fetch\' ) );
wp.apiFetch() 像这样:

wp.apiFetch( { path: \'/wp/v2/posts?per_page=2\' } ).then( function( posts ){
    console.log( \'Title of the first item is: \' + posts[0].title.rendered );
} );
path REST API路由类似于/wp/v2/posts 可以选择为该特定路由附加一个或多个参数。

如何在编辑器中获取所有帖子的列表以供选择

如果您在管理屏幕上编辑或创建帖子,则wp-api-fetch 如果为该帖子启用了块编辑器,则脚本已排队。如果您专门创建一个块,那么您实际上可以使用getEntityRecords() 随着withSelect (用于侦听状态更改)。请参见Latest Posts block 用于示例实现。

SO网友:Den Pat

您需要将WP-API-javascript排队,您应该已经在您的一个自定义文件中添加了上述代码,假设您的文件名是myscript。js公司

您应该在某个地方将其排队,修改它并将wp api作为依赖项附加,如下所示:

wp_enqueue_script( \'my_script\', \'path/to/my/myscript.js\', array( \'wp-api\' ) );

相关推荐

安装和卸载WP-REST-API插件后API返回空白响应

WordPress/WooCommerce API在我的网站上被破坏:http://example.com/wp-json/wp/v2/posts 和http://example.com/wp-json/wc/v2/products 两者都返回空白响应。运行Python请求response = requests.get(\'http://<mysite>.com/wp-json/wp/v2/posts\', auth=HTTPBasicAuth(*auth)) 给出的响应(在调试器中