Wp.editor.初始化未按预期工作

时间:2017-09-12 作者:Rice_Crisp

我运行了一个函数来重命名列表中可拖动/可排序的项目,如果这些项目中有wysiwyg编辑器,我会很高兴。我看到4.8引入了一些新的javascript函数,所以我试用了它们。不幸的是,我似乎无法让它们与动态元素一起正常工作。下面是在页脚中运行的函数:

// Check order of sortable items
var checkOrder = (function checkOrder() {
  jQuery(\'.sortable-container\').each(function() {
    jQuery(this).find(\'.sortable-item\').each(function(i) {
      jQuery(this).find(\'label\').each(function() {
        if (jQuery(this).attr(\'for\')) {
          var oldFor = jQuery(this).attr(\'for\');
          jQuery(this).attr(\'for\', oldFor.replace(/\\d+/g, i));
        }
      });
      jQuery(this).find(\'input, textarea\').each(function() {
        if (jQuery(this).attr(\'id\')) {
          var oldId = jQuery(this).attr(\'id\');
          jQuery(this).attr(\'id\', oldId.replace(/\\d+/g, i));
        }
        if (jQuery(this).attr(\'name\')) {
          var oldName = jQuery(this).attr(\'name\');
          jQuery(this).attr(\'name\', oldName.replace(/\\d+/g, i));
        }
      });
    });
  });
  jQuery(\'.wp-editor\').each(function() {
    wp.editor.initialize(this.id, {
      tinymce: true,
      quicktags: true
    });
  });
  return checkOrder;
}());
分拣本身起作用;项目id和名称已正确更改,但当我尝试运行wp时。编辑初始化,不会发生任何事情。如果我在事后再次运行它,那么它会在每个编辑器之上创建两个编辑器,因此它必须在一定程度上运行,但不能完全运行。我曾尝试在其他上下文中使用javascript函数,但结果类似:有时可以使用,有时不能完全初始化。有什么想法吗?有什么问题吗?或者我如何解决?

更新时间:

好的,我想我已经解决了这个问题,但我不知道如何解决它。我不知道如何使我的脚本依赖于wp\\u enqueue\\u editor(),特别是在wp editor类中创建的脚本。php。目前它正在加载我的脚本之后。正如Jarocks指出的,这是类wp编辑器。定义wp的php。编辑getDefaultSettings(这是我的editor.js以前失败的地方)。

4 个回复
SO网友:Antonio Novak

您只能使用wp_enqueue_editor(); 而不是:

if ( ! class_exists( \'_WP_Editors\', false ) ) {
    require( ABSPATH . WPINC . \'/class-wp-editor.php\' );
}
add_action( \'admin_print_footer_scripts\', array( \'_WP_Editors\', \'print_default_editor_scripts\' ) );

SO网友:Jarocks

我也有类似的问题wp.editor.initialize, 经过一点故障排除,我发现一些所需的脚本没有完全加载。

将此代码片段添加到我的插件中修复了此问题:

if ( ! class_exists( \'_WP_Editors\', false ) ) {
    require( ABSPATH . WPINC . \'/class-wp-editor.php\' );
}
add_action( \'admin_print_footer_scripts\', array( \'_WP_Editors\', \'print_default_editor_scripts\' ) );

SO网友:Muhammad Junaid

你应该试试wp.oldEditor.initialize() 而不是wp.editor.initialize() , 确保首先将编辑器排队

SO网友:Jay Maharjan

在执行ajax调用后,我遇到了同样的问题,并发现在初始化编辑器之前,如果我们已经在php中初始化了编辑器,那么我们需要删除编辑器调用,然后只需要初始化编辑器

wp.editor.remove(editorID);
wp.editor.initialize(editorID, {
    tinymce: {
      wpautop: true,
      plugins : \'charmap colorpicker hr lists paste tabfocus textcolor fullscreen wordpress wpautoresize wpeditimage wpemoji wpgallery wplink wptextpattern\',
      toolbar1: \'formatselect,bold,italic,bullist,numlist,blockquote,alignleft,aligncenter,alignright,link,wp_more,spellchecker,fullscreen,wp_adv,listbuttons\',
      toolbar2: \'styleselect,strikethrough,hr,forecolor,pastetext,removeformat,charmap,outdent,indent,undo,redo,wp_help\',
      textarea_rows : 20
    },
    quicktags: {buttons: \'strong,em,link,block,del,ins,img,ul,ol,li,code,more,close\'},
    mediaButtons: false,
});

结束

相关推荐

第一次提交时WP-EDITOR为空

我在一个简单的插件中使用wp编辑器,但我遇到了一个问题,第一次点击提交按钮时,数据库中的内容是空白的。<?php $editor_id = \'mycontent\'; wp_editor($content, $editor_id ); ?> 因此,我尝试使用以下内容提醒内容:if (j(\".wp-content-wrap\").hasClass(\"tmce-active\")){ alert(