如何解决如何覆盖Wordpress的核心块保存功能?
我想要做的就是覆盖核心块的保存功能,以使用不同的 html 呈现前端。当我使用 wordpress 5.3 时,我能够使用 PHP 覆盖并使其成为动态块(我更喜欢):
register_block_type( 'core/file',array(
'render_callback' => 'custom_core_block_render_cb',));
但现在我已经更新到 wordpress 5.6,有一条 wordpress 通知说“WP_Block_Type_Registry::register 被错误调用。块类型“核心/文件”已经注册。”
这个通知是否重要到我不能忽视它?如果不是,那么有没有办法绕过它,而无需使用 blocks.registerBlockType
覆盖 javascript 端的 save() 因为它所做的一切都会带来未来的问题并在将来打破块(如果我需要的话)更新(这真的让我感到不安)。也宁愿不复制整个块。
解决方法
您不应该尝试重新注册核心块。 WP 核心块有一个过滤器来改变输出:render_block
这是过滤器:
apply_filters( 'render_block',string $block_content,array $block )
用法如下:
// Two arguments
add_filter( 'render_block','so66910341_core_file_output',10,2 );
function so66910341_core_file_output( string $block_content,array $block ) {
if ( $block['blockName'] === 'core/file' ) :
// update the $block_content here
$updated_content_markup = '<html stuff>';
$updated_content_markup .= $block_content;
$updated_content_markup .= '</closing html stuff>';
return $updated_content_markup; // or whatever variable you use.
endif;
// Return the original block content if it's not a core/file block.
return $block_content;
}
文档如下: https://developer.wordpress.org/reference/hooks/render_block/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。