古腾堡自定义元数据块未将元数据保存为自定义 post 类型
Gutenberg custom meta blocks not saving meta to custom post type
我有一个网站,其自定义 post 类型设置为定义主页号召性用语框。
标题、描述和特色图片均由编辑器的默认 blocks/features 处理,但我正在尝试添加一个自定义块以将 url 保存到 post的元。
该块正确呈现但未保存元数据,肯定会调用 updateBlockValue
函数。
我使用几乎相同的代码为页面和 post 创建自定义元块。此方法是否不适用于自定义 post 类型?
这是我正在使用的代码:
PHP
function wb_blocks() {
wp_register_script(
'wb-blocks-js',
get_template_directory_uri() . '/scripts/block.js',
array( 'wp-blocks', 'wp-editor', 'wp-element','wp-components' )
);
register_block_type( 'ray/homebox-link-url', array(
'editor_script' => 'wb-blocks-js',
) );
}
add_action( 'init', 'wb_blocks' );
function wb_register_block_meta() {
register_meta( 'post', 'homebox_link_url', array(
'show_in_rest' => true,
'single' => true,
'type' => 'string',
) );
}
add_action( 'init', 'wb_register_block_meta' );
JS
registerBlockType( 'ray/homebox-link-url', {
title: 'Homebox Link',
icon: 'universal-access-alt',
category: 'layout',
attributes: {
blockValue: {
type: 'string',
source: 'meta',
meta: 'homebox_link_url',
}
},
edit: function( props ) {
var setAttributes = props.setAttributes;
function updateBlockValue( blockValue ) {
setAttributes({ blockValue });
}
return el(
'div',
{ className: "homebox-link-url" },
el( 'h5',{}, 'URL to link to:'),
el (TextControl,
{
onChange: updateBlockValue,
value: props.attributes. blockValue,
})
);
},
save: function( props ) {
return null;
},
} );
您的块相关代码看起来不错。
问题可能与自定义 post 类型有关。当你注册它时,你必须确保它支持自定义字段:
register_post_type(
'post-type',
[
// […]
'supports' => [
// […]
'custom-fields',
],
]
);
最后一步确保您的自定义 post 类型公开来自 REST API 的元 属性,这是古腾堡用来 view/update 数据的.
来源:https://github.com/WordPress/gutenberg/issues/5622#issuecomment-375362438
我有一个网站,其自定义 post 类型设置为定义主页号召性用语框。
标题、描述和特色图片均由编辑器的默认 blocks/features 处理,但我正在尝试添加一个自定义块以将 url 保存到 post的元。
该块正确呈现但未保存元数据,肯定会调用 updateBlockValue
函数。
我使用几乎相同的代码为页面和 post 创建自定义元块。此方法是否不适用于自定义 post 类型?
这是我正在使用的代码:
PHP
function wb_blocks() {
wp_register_script(
'wb-blocks-js',
get_template_directory_uri() . '/scripts/block.js',
array( 'wp-blocks', 'wp-editor', 'wp-element','wp-components' )
);
register_block_type( 'ray/homebox-link-url', array(
'editor_script' => 'wb-blocks-js',
) );
}
add_action( 'init', 'wb_blocks' );
function wb_register_block_meta() {
register_meta( 'post', 'homebox_link_url', array(
'show_in_rest' => true,
'single' => true,
'type' => 'string',
) );
}
add_action( 'init', 'wb_register_block_meta' );
JS
registerBlockType( 'ray/homebox-link-url', {
title: 'Homebox Link',
icon: 'universal-access-alt',
category: 'layout',
attributes: {
blockValue: {
type: 'string',
source: 'meta',
meta: 'homebox_link_url',
}
},
edit: function( props ) {
var setAttributes = props.setAttributes;
function updateBlockValue( blockValue ) {
setAttributes({ blockValue });
}
return el(
'div',
{ className: "homebox-link-url" },
el( 'h5',{}, 'URL to link to:'),
el (TextControl,
{
onChange: updateBlockValue,
value: props.attributes. blockValue,
})
);
},
save: function( props ) {
return null;
},
} );
您的块相关代码看起来不错。
问题可能与自定义 post 类型有关。当你注册它时,你必须确保它支持自定义字段:
register_post_type(
'post-type',
[
// […]
'supports' => [
// […]
'custom-fields',
],
]
);
最后一步确保您的自定义 post 类型公开来自 REST API 的元 属性,这是古腾堡用来 view/update 数据的.
来源:https://github.com/WordPress/gutenberg/issues/5622#issuecomment-375362438