注销WordPress的wp-reset-editor-styles导致wp-block-directory异常如何解决
问题根因
你直接在admin_menu阶段注销wp-reset-editor-styles会触发错误,是因为该样式是多个后台编辑器内置样式的公共依赖项,此时WordPress已经完成了样式队列的初始化,直接删除依赖会导致load-styles.php的句柄拼接逻辑出错,就是你看到的URL参数乱码问题,CONCATENATE_SCRIPTS配置仅控制脚本拼接,对样式拼接逻辑无效。
最优解决方案:覆盖冲突样式(无依赖风险)
不需要注销原有样式,直接注入优先级更高的自定义规则覆盖revert属性即可,不会触发任何依赖相关的bug:
add_action( 'enqueue_block_editor_assets', function() { $custom_editor_css = " .editor-styles-wrapper p { /* 替换为你需要的实际属性值即可 */ font-size: 16px; line-height: 1.7; margin: 0 0 1.2em 0; } /* 其他被revert影响的选择器可以直接往下加 */ "; // 挂载到编辑器核心样式后输出,优先级更高 wp_add_inline_style( 'wp-edit-blocks', $custom_editor_css ); }, 999 );
备选方案:完全移除目标样式(需先清理依赖)
如果你确实需要彻底删除wp-reset-editor-styles,要在样式初始化阶段先清理所有依赖关联再注销,避免队列错误:
add_action( 'wp_default_styles', function( $wp_styles ) { $target_handle = 'wp-reset-editor-styles'; if ( !isset( $wp_styles->registered[$target_handle] ) ) { return; } // 遍历所有已注册样式,移除对目标样式的依赖 foreach ( $wp_styles->registered as $handle => $style_item ) { if ( in_array( $target_handle, $style_item->deps, true ) ) { $wp_styles->registered[$handle]->deps = array_diff( $style_item->deps, [ $target_handle ] ); } } // 依赖清理完成后再注销 wp_deregister_style( $target_handle ); }, 11 );
内容的提问来源于stack exchange,提问作者DeFeNdog
相关产品推荐
相关产品推荐

