1

我正在尝试为动态 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 时却找不到。

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

感谢您的帮助和建议!

4

1 回答 1

1

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

设置 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 相当陌生。

于 2016-11-17T04:36:06.850 回答