动态生成的Wordpress Wysiwyg编辑器(wp_editor)无法正常显示

时间:2013-07-31 22:06:56

标签: php ajax tinymce wordpress

我在wordpress管理页面上有2个html wysiwyg编辑器。两者都使用WP_EDITOR()函数。第一个硬编码到页面中:

<form name="form1" id="form1" method="post" action="" style="display:block;">
  <p>
    <!-- editor here -->
    <?php
       wp_editor( 'CONTENT WILL APPEAR HERE!', 'addsometxt', array('textarea_name'=>'create_txt','textarea_rows'=>10,'wpautop'=>false));
    ?>
  </p>
  <p>
   <input name="save" type="submit" class="button-primary" id="save" style="margin:5px;" value="Save Input" /></p>
</form>

第二个是使用AJAX调用(wp_ajax_和$ .post)使用PHP函数动态生成的。我测试了ajax调用并知道它有效;所以,为简洁起见,这里是php函数:

<?php
function display_editor2() {
// grab data from database (data_from_db) and display in editor
  wp_editor( $row->data_from_db, 'editsometxt', array('textarea_name'=>'edit_txt','textarea_rows'=>10,'wpautop'=>false));

} 
?>

问题在于即使第二个编辑器正在显示;它缺少所有工具栏按钮。请参见下图以获取说明。有人知道该解决这个问题吗?

enter image description here

5 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

当我在footer.php中添加代码<?php wp_footer(); ?>时,它可以正常工作。

答案 1 :(得分:0)

我有完全相同的问题并以这种方式解决(WP 4.7):

首先在模板中创建一个隐藏的编辑器,以便WP为TinyMCE加载所有必需的文件(ID并不重要):

<div style="display:none"><?php wp_editor('', 'hidden_editor'); ?></div>

然后在将新编辑器附加到DOM后,使用以下函数:

quicktags({id :'your_new_editor_id'});
tinymce.execCommand('mceAddEditor', true, 'your_new_editor_id');

使用tinymce.init对我没用,因为新的编辑ID无法识别。这两行重新实现了quicktags并添加了新的编辑器。

答案 2 :(得分:-1)

您可能需要在AJAX通话中添加 media_buttons tinymce 参数。

这样的事情:

<?php
function display_editor2() {
    // grab data from database (data_from_db) and display in editor
    wp_editor( $row->data_from_db, 'editsometxt', array('textarea_name'=>'edit_txt','media_buttons'=>true,'tinymce'=>true,'textarea_rows'=>10,'wpautop'=>false));

    } 
?>

我建议您在Wordpress Codex上查看wp_editor()功能参考页。

答案 3 :(得分:-1)

嘿,我也有同样的问题!

我刚刚停用了我安装的所有插件并刷新了页面,然后我也尝试编辑可视区域中的帖子/页面。检查一下它是否适合您。 :)

答案 4 :(得分:-1)

我遇到了同样的问题:

<?php wp_editor(get_the_content()); ?>

通过传递ID(第二个参数到wp编辑器)我得到了按钮。 像这样:

<?php wp_editor(get_the_content(), "with_a_ID_its_buttons_are_showing"); ?>