2016-11-17 36 views
0

我試圖爲動態wp編輯器設置自動保存以防萬一我的用戶忘記點擊保存。 (目前使用AJAX按鈕設置保存。)用戶可以有0到20個單獨的條目。wp編輯器設置數組自動保存功能onchange

似乎應該將某些東西添加到wp_editor設置數組中,以便在初始化tinymce時添加它。 The settings數組正在工作。我可以添加或刪除媒體按鈕。但是,我似乎無法將正確的代碼插入到設置中,以便在活動編輯器更改時啓動它。

這是我的。

$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時無法修改。

我想過設置隱藏的字段來比較,但這似乎是一個糟糕的路要走。應該有一些構建功能來利用,而不是從頭開始創建它。

謝謝你的幫助和建議!

回答

0

所以它看起來像你不想通過設置數組來做到這一點。相反,添加一個過濾器來插入此代碼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相當陌生。