搜索全站
网站迁移 11 分钟阅读

WordPress 经典编辑器怎么恢复使用:Classic Editor 配置与替代方案

习惯了经典编辑器的人换到区块编辑器会明显掉效率。本文讲清恢复经典编辑器的三种方式(官方插件、代码过滤、按用户切换)、TinyMCE 工具栏定制、老短代码的兼容处理,以及长期继续使用经典编辑器的风险。

U
UFO_PF 2025-02-11 · 阅读 11 分钟
Wo 网站迁移
阅读提示
本文约 4,374 字,预计阅读 11 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:不是守旧,是有真实需求

区块编辑器上线六年多,仍然有大量站点坚持用经典编辑器(Classic Editor / TinyMCE)。原因很实际:

  • 写了几百篇带大量短代码的老文章,区块编辑器打开全是”未转换的区块”;
  • 页面构建器(Elementor、WPBakery)接管了布局,正文只是纯文本,区块编辑器显得多余;
  • 编辑团队已经形成肌肉记忆,换编辑器直接影响产出;
  • 某些老插件的元框(metabox)在区块编辑器侧栏里显示异常。

这些需求都是真实的。这篇文章讲怎么恢复,以及恢复之后要注意什么。

原理分析:编辑器切换到底改了什么

经典编辑器的核心是 TinyMCE(一个独立的 JS 富文本编辑器),外加 WordPress 的 wp_editor() 封装。区块编辑器( Gutenberg)是完全独立的一套 React 应用。

关键区别在内容存储:

  • 经典编辑器存的是纯 HTML(<p>文字</p>);
  • 区块编辑器存的是带 <!-- wp:xxx --> 注释的 HTML。

两者互相兼容:区块编辑器能读纯 HTML(自动包成经典区块),经典编辑器也能读区块 HTML——但会丢失区块信息。这是最重要的一条:

用经典编辑器打开并保存一篇区块文章,所有区块注释会被清掉,文章降级成纯 HTML。再想用区块编辑器编辑,就得”转换区块”,且部分布局信息已永久丢失。

所以如果团队里两种编辑器混用,很容易出现”某人保存了一下,整站的区块布局全没了”这种事故。

保姆级实操

方案一:装官方 Classic Editor 插件(推荐)

插件目录搜 “Classic Editor”,作者是 WordPress Contributors(官方维护)。

装完去 设置 → 撰写(旧版在 设置 → 经典编辑器设置):

  • 默认编辑器:选”经典编辑器”或”区块编辑器”;
  • 允许用户切换编辑器:勾上后,每个用户在 用户 → 个人资料 里可以自己选;
  • 也可以按文章类型分别设置。

官方插件的好处是它会持续维护,且提供 classic-editor-reminder 之类的钩子供二次开发。

方案二:代码禁用(不装插件)

在子主题 functions.php 里加:

// 全站禁用区块编辑器
add_filter( 'use_block_editor_for_post_type', '__return_false', 100 );

// 同时禁用小工具的区块编辑器
add_filter( 'use_widgets_block_editor', '__return_false' );

只禁用文章,页面保留区块编辑器:

add_filter( 'use_block_editor_for_post_type', function( $use, $post_type ) {
    if ( 'post' === $post_type ) {
        return false;
    }
    return $use;
}, 100, 2 );

按文章 ID 精确控制:

add_filter( 'use_block_editor_for_post', function( $use, $post ) {
    // ID 为 123 的文章强制用经典编辑器
    if ( $post && 123 === $post->ID ) {
        return false;
    }
    return $use;
}, 100, 2 );

按用户角色控制:

add_filter( 'use_block_editor_for_post_type', function( $use, $post_type ) {
    if ( 'post' === $post_type && ! current_user_can( 'manage_options' ) ) {
        return false;   // 非管理员一律用经典编辑器
    }
    return $use;
}, 100, 2 );

方案三:装 Classic Widgets 恢复老小工具界面

WordPress 5.8 把小工具也区块化了。装 “Classic Widgets” 插件(官方)可以恢复老界面。或者代码:

add_filter( 'use_widgets_block_editor', '__return_false' );

定制 TinyMCE 工具栏

经典编辑器的按钮可以增删:

add_filter( 'mce_buttons', function( $buttons ) {
    // 第一行按钮
    $buttons[] = 'superscript';
    $buttons[] = 'subscript';
    return $buttons;
});

add_filter( 'mce_buttons_2', function( $buttons ) {
    // 第二行:加上删除线、下划线、字体颜色
    array_unshift( $buttons, 'strikethrough', 'forecolor' );
    return $buttons;
});

常用按钮名:bold、italic、underline、strikethrough、bullist、numlist、blockquote、alignleft、aligncenter、alignright、link、unlink、wp_more、fullscreen、wp_adv、hr、removeformat、charmap、pastetext。

启用”文本”标签页的 HTML 编辑:经典编辑器默认有”可视化/文本”两个标签。如果”文本”标签没了,通常是被插件或主题禁用了:

add_filter( 'wp_editor_settings', function( $settings ) {
    $settings['quicktags'] = true;
    return $settings;
});

处理老短代码

经典编辑器最典型的用途就是配合短代码。如果短代码前台不生效:

// 确保短代码在正文和摘要里都执行
add_filter( 'the_content', 'do_shortcode', 11 );
add_filter( 'the_excerpt', 'do_shortcode', 11 );

// 在小工具里也执行
add_filter( 'widget_text', 'do_shortcode' );

主题的 single.php 必须输出的是 the_content() 而不是 get_the_content()(后者不执行过滤器):

grep -n "the_content\|get_the_content" wp-content/themes/你的主题/single.php

让经典编辑器支持更多标签(不被过滤)

WordPress 的 wp_kses_post 会过滤危险标签。如果需要保留 iframe(比如嵌入视频):

add_filter( 'wp_kses_allowed_html', function( $tags, $context ) {
    if ( 'post' === $context ) {
        $tags['iframe'] = array(
            'src'             => true,
            'width'           => true,
            'height'          => true,
            'frameborder'     => true,
            'allowfullscreen' => true,
            'style'           => true,
        );
    }
    return $tags;
}, 10, 2 );

常见踩坑与失败案例

  1. 案例一:团队里有人用经典编辑器打开并保存了首页(区块做的落地页),所有区块结构丢失,前台布局全塌。教训:用区块编辑器做的页面,务必把经典编辑器排除掉,用上面”按文章 ID 控制”的代码锁定。
  2. 案例二:装了 Classic Editor 但设置页找不到。这个插件的设置入口在 设置 → 撰写,不在插件列表里。
  3. 禁用后 metabox 位置变了:经典编辑器里自定义字段框在正文下方正常显示,区块编辑器里被塞进右侧栏。禁用后恢复正常,这是很多人坚持用经典编辑器的真实原因。
  4. TinyMCE 按钮加了不显示:浏览器缓存了旧的 JS。清浏览器缓存,或者 wp cache flush。
  5. 案例三:主题用 get_the_content() 输出,短代码显示成 [xxx] 原文。改成 the_content() 即可。
  6. 经典编辑器里的空段落:从 Word 粘贴内容会产生大量 <p>&nbsp;</p>,前台留白很多。用”文本”标签手工清理,或装 “TinyMCE Advanced” 的粘贴清理功能。
  7. 长期风险:官方承诺 Classic Editor 插件会持续维护,但核心开发资源都投向区块编辑器和站点编辑器(FSE)。新建站点建议直接上区块编辑器;老站点继续用经典编辑器没问题,但要有”未来可能要迁移”的心理准备。

总结

恢复经典编辑器的最省事方案是装官方 Classic Editor 插件并在 设置 → 撰写 里配置,比写代码更好维护;需要精细控制(按文章、按角色)时用 use_block_editor_for_post_type / use_block_editor_for_post 钩子;同时别忘了 use_widgets_block_editor 这一个小工具开关。最大的风险点是混用:经典编辑器保存区块文章会永久清除区块结构,所以一定要用代码锁定重要页面不许用经典编辑器打开。老站继续用没问题,新建站建议拥抱区块编辑器——它和 SEO 结构化数据、FSE 主题、多端适配是绑定的。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。