仅以编程方式禁用一个古登堡块/coblock/未在块中列出的地图

时间:2021-10-12 作者:Alex

我已安装https://github.com/godaddy-wordpress/coblocks 并且只想提供基于OpenStreetMap的块(我另外安装了),并删除coblocks/map

add_filter( \'allowed_block_types_all\', \'myplugin_allowed_block_types\', 0 );

function myplugin_allowed_block_types( $allowed_blocks )
{
    $block_types = WP_Block_Type_Registry::get_instance()->get_all_registered();
    if (!isset($block_types[\'coblocks/map\'])) {
        wp_die(\'Block not found to unset\');
    }
    unset($block_types[\'coblocks/map\']);
    return array_keys($block_types);
}
这个死了Block not found to unset

实际上,代码在没有检查的情况下可以工作,但我想知道是否还有其他块不在注册表中,但仍然可以工作,并且会被我的代码禁用。

所以本质上我是在问为什么get_all_registered 没有一些仍然存在的块,如果无法可靠地获取所有块的列表,如何仅删除特定块。

1 个回复
最合适的回答,由SO网友:StudioAl 整理而成

您将希望通过javascript专门针对该块。简要示例:

wp.domReady(function() {
    wp.blocks.unregisterBlockType( \'coblocks/map\' );
});
将其保存到js文件,并通过自定义函数将其排队:add_action(\'enqueue_block_editor_assets\', \'your_custom_enqueue_fucntion\')

相关推荐