如何在Gutenberg块中获得分类/类别列表?

时间:2018-11-12 作者:JakeParis

我想在古腾堡区块内显示类别(或其他分类法)的下拉列表。我只能想到两种方法:

在php中创建一个分类数组,并使用wp_localize_script 使该数据可用于我的块javascript使用fetch()? 在块中,访问api的json/wp/v2/categories,获取所有类别这些是首选方法之一吗?是否有其他内置或更好的方法来实现这一点?

编辑

在我继续研究这一点的过程中,我了解到Gutenberg插件中的另一种方法,该方法可能在该编辑器成为core的一部分后可用:wp.apiFetch(). 很明显,这是一个围绕fetch的包装,它隐藏了一些不必要的部分。现在我想知道这是否是首选方法。

使用wp.apiFetch() 在块中,访问REST api的类别,并获取所有类别

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

使用如下函数将元素加载到常量中:

const postSelections = [];

const allPosts = wp.apiFetch({path: "/wp/v2/posts"}).then(posts => {
    postSelections.push({label: "Select a Post", value: 0});
    $.each( posts, function( key, val ) {
        postSelections.push({label: val.title.rendered, value: val.id});
    });
    return postSelections;
});
然后使用postSelections作为元素“选项”。

                    el(
                        wp.components.SelectControl,
                        {
                            label: __(\'Select a Post\'),
                            help: \'Select a post to display as a banner.\',
                            options: postSelections,
                            value: selectedPost,
                            onChange: onChangePost
                        }
                    ),

SO网友:Aaron

你不需要apiFetch 或本地化以获取所有类别的列表。您可以使用wp.data 模块:

wp.data.select(\'core\').getEntityRecords(\'taxonomy\', \'category\');
请参见Gutenberg Handbook 有关更多详细信息,请输入核心数据。

结束