You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress 4.9.6中TinyMCE.ui.Controller未定义问题求助

排查TinyMCE.ui.Controller在WordPress 4.9.6中未定义的问题

这问题我之前帮开发者排查过类似的,结合WordPress 4.9.6的核心更新和TinyMCE的变动,大概率是以下几个原因导致的:

可能的原因

  • WordPress对TinyMCE的模块裁剪
    WordPress 4.9.6升级时,可能为了优化后台加载速度,对内置的TinyMCE进行了自定义打包,默认不再加载Controller这个非核心UI模块。而4.9.5版本是全量加载TinyMCE的UI组件,所以之前能正常访问。

  • 脚本加载顺序冲突
    你的自定义代码可能在TinyMCE的Controller模块完成注册前就尝试访问它。4.9.6调整了后台脚本的加载优先级或异步策略,导致依赖的模块还未初始化就被调用。

  • 主题/插件的兼容问题
    如果你的主题或第三方插件有修改TinyMCE加载逻辑的代码(比如通过tiny_mce_before_init钩子修改配置),4.9.6的核心变动可能打破了之前的兼容逻辑,导致Controller模块无法正常加载。

解决方法

1. 显式加载Controller模块

通过WordPress的tinymce_enqueue_scripts钩子,在TinyMCE初始化前强制加载Controller模块:

add_action('tinymce_enqueue_scripts', function() {
    // 注册Controller模块到TinyMCE的UI工厂
    wp_add_inline_script(
        'wp-tinymce',
        'if (tinymce.ui && tinymce.ui.Factory) {
            tinymce.ui.Factory.add("controller", tinymce.ui.Controller);
        }'
    );
    // 如果上述方法无效,可以尝试直接加载对应的模块脚本
    wp_enqueue_script(
        'tinymce-controller',
        includes_url('js/tinymce/ui/controller.js'),
        array('wp-tinymce'),
        false,
        true
    );
});

注意:脚本路径可能需要根据WordPress的实际安装目录调整。

2. 确保代码在TinyMCE初始化后执行

修改你的前端代码,监听TinyMCE的init事件,确保在编辑器完全初始化后再访问Controller:

tinymce.init({
    setup: function(editor) {
        editor.on('init', function() {
            // 在这里安全访问tinymce.ui.Controller
            if (typeof tinymce.ui.Controller !== 'undefined') {
                // 你的业务逻辑代码
            } else {
                console.warn('TinyMCE Controller模块未加载');
            }
        });
    }
});

3. 核对WordPress 4.9.6更新日志

可以查看WordPress官方的4.9.6更新说明,确认是否有关于TinyMCE模块调整的记录,这能帮你更精准地定位问题根源。

从你提供的截图来看,控制台明确抛出tinymce.ui.Controller is undefined的错误,这直接证明该模块未被注册到TinyMCE的UI命名空间中,和上面提到的模块裁剪或加载顺序问题完全匹配。

内容的提问来源于stack exchange,提问作者Britt Danzer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:03:03