在自定义程序

时间:2016-11-20 13:41:11

标签: php wordpress tinymce

我很难在wordpress定制器中尝试使用小型mce编辑器。

看起来只是在调用" wp_editor"从我的WP_Customize_Control扩展程序中,不会在自定义程序中触发加载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
    }

有关如何做到这一点的任何建议吗?

2 个答案:

答案 0 :(得分:1)

我设法让它发挥作用。请参阅workdpress.stackexchange上的确凿代码示例,了解我的回答。

P.S。我也试图调用do_action('admin_print_footer_scripts')这显然是一个肮脏的黑客,因为它在自定义程序页面上包含了许多其他不必要的脚本,但是等待更优雅的解决方案......

答案 1 :(得分:0)

好的,找到了一个解决方案,但在自定义程序中使用wp_editor意味着打开潘多拉的盒子。

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

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

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

  • 富文本框中的更新将保存到相应的文本区域,但是&#34;更改了#34;或&#34; keyup&#34; wp.​​customize正在监视postMessage是不是由富编辑器触发,而是直接更改textarea。
  • 由于上述原因,&#34; Save&#34;按钮不会启用。
  • 人为触发&#34;改变&#34;和#34; keyup&#34; texsrea上的事件不会被wp.customize捕获,因此预览区域中的更新回调不会被调用
  • 一旦每个自定义程序加载,就会无法完全呈现,这可能是由于管理脚本的加载方式

因此,经过多次挖掘这个主题后,我意识到wp_editor还没有准备好在帖子编辑以外的其他方面可靠地使用。