Wp编辑器设置数组自动保存功能

wp editor settings array autosave function onchange

本文关键字:保存 功能 数组 编辑器 设置 Wp      更新时间:2023-09-26

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

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

这是我有的。

$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函数之外创建一些东西?我可以找到很多代码手动启动和修改它,但不是当试图通过Wordpress。

我想过设置隐藏字段进行比较,但这似乎是一种不好的方式。应该有一些内置的功能来利用,而不是从头开始创建。

谢谢你的帮助和建议!

因此,看起来您不想通过设置数组来执行此操作。相反,添加一个过滤器来插入这段代码pre_init。下面的代码"点击"保存按钮,并打印到控制台的更改事件从wordpress的时间。

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