保存所见即所得编辑器插件设置,仅在第二次保存后才起作用

时间:2014-05-21 作者:EHerman

我在我的一个插件设置页面上设置了所见即所得编辑器。内容会保存,但只有在您点击“保存”两次后才能保存。如果你点击一次,你会收到保存设置的消息,但内容实际上不会保存。刷新页面后,页面会恢复到以前的状态。

我正在使用wp\\u editor初始化编辑器,如下所示:

$single_optin_message_parameters = array(
        \'teeny\' => true,
        \'textarea_rows\' => 15,
        \'tabindex\' => 1,
        \'textarea_name\' => \'single-optin-message\'
    );

<?php wp_editor( $this->optionVal[\'single-optin-message\'] , \'single_optin_message\', $single_optin_message_parameters); ?>
我通过AJAX保存内容。

$(\'#form\').submit(function (e) {            
    // Make sure the api key exists
   if (blankFieldCheck()) {
              $.ajax({
                type: \'POST\',
                url: ajaxurl,
                data: {
                    action: \'yks_form\',
                    form_action: \'update_options\',
                    form_data: $(\'#yks-form\').serialize()
                },
                dataType: \'json\',
                success: function (RESPONSE) {
                    if (RESPONSE == \'1\') {  
                        $(\'#yks-status\').html(\'<div class="updated"><p><?php _e(\'The options were saved successfully!\', \'yikesplugin\'); ?></p></div>\');
                        $(\'#yks-status\').slideDown(\'fast\');
                    } else {
                        $(\'#yks-status\').html(\'<div class="error"><p><?php _e(\'The options could not be saved (or you did not change them).\', \'yikes-inc-easy-mailchimp-extender\'); ?></p></div>\');
                        $(\'#yks-status\').slideDown(\'fast\');
                        console.log(RESPONSE);
                    }
                },
                error : function(RESPONSE2) {
                    console.log(RESPONSE2.responseText);
                }
            });
   } 
   e.preventDefault();
});
当字段为标准字段时,此操作有效<textarea></textarea> 但是,在我将其转换为所见即所得时,我需要按两次“保存”,以便实际保存数据。我不明白为什么。我已经测试了保存表单时序列化的数据,我可以看到我的新数据已经传递,并且我得到了它已保存的确认。然后我刷新页面,它就会恢复。没有意义。

1 个回复
SO网友:EHerman

我希望我能够准确地解释为什么这会起作用,但需要另一个wordpress的帮助。StackExchange问题我找到了解决方案。

正在添加tinyMCE.triggerSave(); 直接在之后。提交功能强制更新内容。这直接取自另一个线程的答案:

“tinyMCE textarea最初不被使用的序列化函数看到:”

参考文献:wp_editor textarea value not updating

所以现在是:

if (blankFieldCheck()) {
  tinyMCE.triggerSave(); <-- new
   $.ajax({
    .... rest of code executed
这似乎起到了作用。我希望其他人会觉得这很有用,因为我花了4个小时才找到解决方法。

呼。

结束

相关推荐

添加自定义文本颜色WordPress 3.9 TinyMCE 4可视化编辑器

我有一个代码片段,它可以帮助我在visual editor文本颜色下拉列表中添加一些自定义颜色以及默认颜色。我正在粘贴下面的片段。function change_mce_options( $init ) { $default_colours = \'000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF990