【问题标题】:wp editor settings array autosave function onchangewp编辑器设置数组自动保存功能onchange
【发布时间】:2017-03-31 09:27:39
【问题描述】:

我正在尝试为动态 wp 编辑器设置自动保存,以防我的用户忘记点击保存。 (目前设置了 AJAX 按钮保存。)用户可以有 0 到 20 个单独的条目。

似乎应该在 wp_editor 设置数组中添加一些内容,以便在初始化 tinymce 时添加。设置数组正在工作。我可以添加或删除媒体按钮。但是,我似乎无法将正确的代码插入设置中,以便在更改活动编辑器时触发某些东西。

这就是我所拥有的。

$editorSettings = 
array ( 'media_buttons' => false,
        'resize' => false,
        'wp_autoresize_on' => true,
        'setup' => "function(ed) {
                      ed.onChange.add(function(ed, l) {
                        console.debug('Editor contents was modified. Contents: ' + l.content);
                      });
                    });" 
  );

使用此代码构建编辑器。

<?php wp_editor( stripslashes($j->journal_entry), 'journal-edit-'.$i , $editorSettings  ); ?>

理想情况下,我会运行我已经编写的 AJAX 保存代码。但是,更改事件似乎没有触发。

这是最好的方法还是我应该在 wp_editor 函数之外创建一些东西。我可以找到很多代码来手动启动 tinymce 并对其进行修改,但在尝试通过 Wordpress 时却找不到。

我曾考虑设置隐藏字段进行比较,但这似乎是一个糟糕的方法。应该有一些内置功能可以使用,而不是从头开始创建它。

感谢您的帮助和建议!

【问题讨论】:

    标签: javascript ajax wordpress tinymce wp-editor


    【解决方案1】:

    所以看起来您不想通过设置数组执行此操作。相反,添加一个过滤器来插入此代码 pre_init。以下代码“单击”保存按钮并在 wordpress 中的 tinymce 更改事件时打印到控制台。

    setup js 字符串需要缩小,否则会在控制台中抛出错误。

    将类似的内容添加到您的functions.php 文件中。注意: ' 需要在某些代码中进行转义,因此它不会错误输出函数文件。

    function mce_autosave_mod( $init ) {
        $init['setup'] = 'function(a){a.on("change",function(b){jQuery(this).parent().find(\'#btnEditCharJournal\').trigger("click"),console.log("the event object ",b),console.log("the editor object ",a),console.log("the content ",a.getContent())})}';     
        return $init;
    }
    add_filter('tiny_mce_before_init', 'mce_autosave_mod');
    

    各种其他代码都可以在这里抛出。最好还添加逻辑以将其限制为您网站上的特定编辑器。您不希望对编辑器的所有实例都运行此操作。

    如果您对清理此问题或以更好的方式进行处理有任何建议,请告诉我。我对过滤器和 wp_editor/tinymce 相当陌生。

    【讨论】:

      猜你喜欢
      • 2019-12-23
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 2010-10-30
      相关资源
      最近更新 更多