移除Gutenberg核心区块时allowed_block_types不生效,求解决方案
解决Gutenberg核心区块过滤不生效的问题
调整钩子优先级与参数规范
你的代码逻辑本身没问题,但大概率是优先级被其他主题或插件覆盖了。把钩子优先级调高,同时修正参数命名(和官方文档保持一致,避免潜在问题):
function wpdocs_allowed_block_types( $allowed_block_types, $editor_context ) { if ( ! empty( $editor_context->post ) ) { return array( 'core/paragraph', 'core/heading', 'core/list', ); } return $allowed_block_types; } add_filter( 'allowed_block_types_all', 'wpdocs_allowed_block_types', 99, 2 );
排查插件与主题冲突
- 禁用所有第三方插件,测试区块过滤是否生效。如果生效,逐个启用插件定位冲突来源。
- 切换到WordPress默认主题(如Twenty Twenty-Four)测试,确认是否是自定义主题的其他代码覆盖了该过滤器。
针对特定帖子类型精准过滤
如果你的自定义主题仅针对特定帖子类型生效,需明确判断帖子类型:
function wpdocs_allowed_block_types( $allowed_block_types, $editor_context ) { // 替换成你需要生效的帖子类型slug,比如'page'或自定义类型 if ( ! empty( $editor_context->post ) && $editor_context->post->post_type === 'post' ) { return array( 'core/paragraph', 'core/heading', 'core/list', ); } return $allowed_block_types; } add_filter( 'allowed_block_types_all', 'wpdocs_allowed_block_types', 99, 2 );
清除编辑器缓存
Gutenberg会缓存区块列表,尝试以下操作:
- 按
Ctrl+F5硬刷新浏览器页面,清除前端缓存。 - 进入后台「设置」→「固定链接」,点击「保存更改」刷新 permalink 规则,间接清除编辑器相关缓存。
内容的提问来源于stack exchange,提问作者wgoodman
相关产品推荐
相关产品推荐

