【问题标题】:enqueue tinymce editor in customizer在定制器中排队 tinymce 编辑器
【发布时间】:2017-04-03 22:25:32
【问题描述】:

我很难让微型 mce 编辑器在 wordpress 定制器中工作。

看起来只是从我的 WP_Customize_Control 扩展中调用“wp_editor”不会触发在定制器中加载 TinyMCE 脚本。

我尝试像这里的答案一样手动加载它们:https://wordpress.stackexchange.com/questions/175307/tinymce-is-not-defined-when-not-using-wp-editor

也尝试使用wp_enqueue_script('tiny-mce'),但无济于事。

这是我的渲染方法,没什么花哨的:

    public function render_content() {

        ?>
        <label>
            <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
            <?php
            $settings = array(
                'media_buttons' => false,
                'quicktags' => false,
                'teeny' => true
            );

            wp_editor($this->value(), $this->id, $settings );
            ?>
        </label>
        <?php
    }

关于如何正确执行此操作的任何建议?

【问题讨论】:

标签: php wordpress tinymce


【解决方案1】:

我设法让它工作。在workdpress.stackexchange 上查看我的结论性代码示例的答案。

附言我也求助于调用do_action('admin_print_footer_scripts'),这显然是一个肮脏的黑客,因为它在定制器页面上包含了一堆其他不必要的脚本,但它确实在等待更优雅的解决方案..

【讨论】:

    【解决方案2】:

    好的,找到了一种解决方案,但在定制器中使用 wp_editor 意味着打开潘多拉魔盒。

    在创建编辑器之前添加do_action('admin_print_footer_scripts');

    do_action('admin_print_footer_scripts');
    wp_editor($this->value(), $this->id, $settings );
    

    将渲染 TinyMCE。但是,仍然存在的问题是:

    • 富文本框中的更新被保存到相应的文本区域,但是 wp.customize 正在监视以执行 postMessage 的“changed”或“keyup”等事件不会由富编辑器触发,而是仅在直接更改时触发文本区域。
    • 由于上述原因,“保存”按钮将无法启用。
    • wp.customize 不会捕获到 textarea 上的“changed”和“keyup”事件的人为触发,因此不会调用预览区域中的更新回调
    • 每加载几个自定义程序,tinymce 将不会完全呈现,可能是由于管理脚本的加载方式

    因此,在深入研究了这个主题之后,我意识到 wp_editor 还没有准备好在帖子编辑之外的其他领域可靠地使用。

    【讨论】:

      猜你喜欢
      • 2017-01-17
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      相关资源
      最近更新 更多