2016-11-17 4 views
0

Ich versuche, eine automatische Speicherung für dynamische WP-Editoren für den Fall, dass meine Benutzer vergessen, auf Speichern klicken. (Derzeit mit AJAX-Taste zum Speichern eingerichtet.) Benutzer können 0 bis 20 separate Einträge haben.wp Editor Einstellungen Array Autosave-Funktion onchange

Es scheint, dass etwas zum Array wp_editor settings hinzugefügt werden muss, damit es hinzugefügt wird, wenn tinymce initialisiert wird. Das Array Einstellungen ist in Arbeit. Ich kann Medientasten hinzufügen oder entfernen. Ich kann jedoch nicht den richtigen Code in die Einstellungen eingefügt bekommen, um etwas auszulösen, wenn der aktive Editor geändert wird.

Hier ist was ich habe.

$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); 
         }); 
        });" 
); 

Bildeditor mit diesem Code.

Idealerweise würde ich einfach den AJAX-Speichercode ausführen, den ich bereits geschrieben habe. Das Änderungsereignis scheint jedoch nicht ausgelöst zu werden.

Ist dies der beste Weg dies zu tun oder sollte ich etwas außerhalb von wp_editor Funktionen erstellen. Ich kann viel Code finden, um manuell ynymce zu starten und zu modifizieren, aber nicht, wenn ich versuche, Wordpress zu durchlaufen.

Ich habe darüber nachgedacht, versteckte Felder zu vergleichen, aber das scheint ein schlechter Weg zu sein. Es sollte eine gewisse Funktionalität eingebaut sein, anstatt sie von Grund auf zu erstellen.

Vielen Dank für Ihre Hilfe und Vorschläge!

Antwort

0

Es sieht also so aus, als ob Sie dies nicht über das Einstellungs-Array tun möchten. Fügen Sie stattdessen einen Filter hinzu, um diesen Code pre_init einzufügen. Der folgende Code "klickt" auf die Schaltfläche "Speichern" und druckt die Konsole aus, um das Ereignis "Change" von "tinymce" in Wordpress zu steuern.

Die Setup-Zeichenfolge js muss verkleinert werden oder es werden Fehler in der Konsole ausgegeben.

Fügen Sie so etwas in Ihre functions.php-Datei ein. Hinweis: 'musste in einigen dieser Code maskiert werden, damit es die Funktionsdatei nicht fehlte.

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'); 

Alle möglichen anderen Codes könnten hier eingefügt werden. Es empfiehlt sich, auch eine Logik hinzuzufügen, um dies auf den speziellen Editor auf Ihrer Site zu beschränken. Sie möchten nicht, dass dies für alle Instanzen des Editors ausgeführt wird.

Wenn Sie irgendwelche Vorschläge haben, um dies aufzuräumen oder es besser zu machen, lassen Sie es mich bitte wissen. Ich bin ziemlich neu bei Filtern und wp_editor/tinymce.