在 Wordpress Gutenberg 自定义块中显示自定义 post 类型的列表
Display list of custom post type in Wordpress Gutenberg custom block
我正在尝试启用我的 Wordpress plugin/theme 的用户,它使用自定义 post 类型来处理产品,创建一个块来显示这些自定义类型之一的摘要 post秒。我试图通过在我的插件中创建一个基于 official tutorial 的自定义块来实现这一点。在 Gutenberg 后端,我想简单地显示一个 select 框,其中包含所有自定义 post 作为选项,但我愿意接受建议。
我已经尝试阅读可以传递给块 javascript 文件中的 getEntityRecords 函数的内容,但文档似乎真的很少。如果有人能指出我正确的方向,我将不胜感激。我也尝试设置 'taxonomy'
而不是 'postType'
,但它也没有用。没有好的 API 文档,可能的选项和参数很难猜测。
这是我的(部分)代码。我想知道第 3 行 getEntityRecords
的可能参数。
edit: withSelect( function( select ) {
// setting postType to 'product' does not work for me here
var pages = select('core').getEntityRecords('postType', 'page', { per_page: 10 });
return {
posts: pages
};
} )( function( props ) {
if ( ! props.posts ) {
return "Loading...";
}
if ( props.posts.length === 0 ) {
return "No posts";
}
var className = props.className;
var post = props.posts[ 0 ];
var options = [];
for (var i = 0; i < props.posts.length; i++) {
var option = el(
'option',
{ value: props.posts[i].id },
props.posts[i].title.rendered
);
options.push(option);
}
var select = el(
'select',
{ className: className },
options
);
return select;
} ),
如果您遇到与我相同的问题:当声明自定义 post 类型时,您必须具有 'show_in_rest' => true,
,因为块基于 restAPI;)希望这有帮助
我正在尝试启用我的 Wordpress plugin/theme 的用户,它使用自定义 post 类型来处理产品,创建一个块来显示这些自定义类型之一的摘要 post秒。我试图通过在我的插件中创建一个基于 official tutorial 的自定义块来实现这一点。在 Gutenberg 后端,我想简单地显示一个 select 框,其中包含所有自定义 post 作为选项,但我愿意接受建议。
我已经尝试阅读可以传递给块 javascript 文件中的 getEntityRecords 函数的内容,但文档似乎真的很少。如果有人能指出我正确的方向,我将不胜感激。我也尝试设置 'taxonomy'
而不是 'postType'
,但它也没有用。没有好的 API 文档,可能的选项和参数很难猜测。
这是我的(部分)代码。我想知道第 3 行 getEntityRecords
的可能参数。
edit: withSelect( function( select ) {
// setting postType to 'product' does not work for me here
var pages = select('core').getEntityRecords('postType', 'page', { per_page: 10 });
return {
posts: pages
};
} )( function( props ) {
if ( ! props.posts ) {
return "Loading...";
}
if ( props.posts.length === 0 ) {
return "No posts";
}
var className = props.className;
var post = props.posts[ 0 ];
var options = [];
for (var i = 0; i < props.posts.length; i++) {
var option = el(
'option',
{ value: props.posts[i].id },
props.posts[i].title.rendered
);
options.push(option);
}
var select = el(
'select',
{ className: className },
options
);
return select;
} ),
如果您遇到与我相同的问题:当声明自定义 post 类型时,您必须具有 'show_in_rest' => true,
,因为块基于 restAPI;)希望这有帮助