Antworten:
Ich war neugierig und überprüfte den Codex auf Tastaturkürzeln , fand ihn dort aber nicht erwähnt.
Ich suchte und fand heraus, dass dies bereits gelöst zu sein scheint, zB hier und hier .
Ich habe diese anderen Plugins nicht getestet, daher bin ich mir nicht sicher, wie sie es lösen, aber ich habe mich entschlossen, die Herausforderung anzunehmen und zu sehen, wie dies gelöst werden kann ;-)
Hier ist mein Hack zum Erstellen von Verknüpfungen für:
ctrl+s : Save Draft
ctrl+p : Publish / Update
mit dem folgenden Test-Plugin , das innerhalb des after_wp_tiny_mce
Hooks ausgeführt wird:
/**
* Plugin Name: Testing ctrl+s and ctrl+p for saving and publishing posts.
* Plugin URI: https://wordpress.stackexchange.com/a/199411/26350
*/
add_action( 'after_wp_tiny_mce', function()
{?><script>
( function ( $ ) {
'use strict';
$( window ).load( function () {
wpse.init();
});
var wpse = {
keydown : function (e) {
if( e.ctrlKey && 83 === e.which ) {
// ctrl+s for "Save Draft"
e.preventDefault();
$( '#save-post' ).trigger( 'click' );
} else if ( e.ctrlKey && 80 === e.which ) {
// ctrl+p for "Publish" or "Update"
e.preventDefault();
$( '#publish' ).trigger( 'click' );
}
},
set_keydown_for_document : function() {
$(document).on( 'keydown', wpse.keydown );
},
set_keydown_for_tinymce : function() {
if( typeof tinymce == 'undefined' )
return;
for (var i = 0; i < tinymce.editors.length; i++)
tinymce.editors[i].on( 'keydown', wpse.keydown );
},
init : function() {
wpse.set_keydown_for_document();
wpse.set_keydown_for_tinymce();
}
}
} ( jQuery ) );
</script><?php });
Ich fügte hinzu , den wpse.keydown Ereignis-Rückruf zu jedem tinymce Editor auf der Seite, so dass die Verknüpfungen auch von dort zur Verfügung stehen würden.
Beachten Sie, dass ich den after_wp_tiny_mce
Hook als praktischen Test-Hook für eine Vanille- Installation verwende, da es sich um das Tinymce- Javascript-Objekt handelt. Wenn wir ein solches Plugin ausliefern, sollten wir es wie gewohnt aus einer .js-Datei in die Warteschlange stellen.
Wir könnten auch das SetupEditor
Ereignis von tinymce verwenden , wie hier von @bonger erwähnt, aber hier habe ich eine zusätzliche Überprüfung hinzugefügt, um festzustellen, ob tinymce definiert ist, um Javascript-Fehler auf Seiten zu vermeiden, auf denen es nicht definiert ist:
// Keydown for tinymce
if( typeof tinymce != 'undefined' )
{
tinymce.on( 'SetupEditor', function (editor) {
wpse.set_keydown_for_tinymce();
});
}
// Keydown for document
wpse.set_keydown_for_document();
Wir könnten wahrscheinlich auch native Tinymce- Verknüpfungen einrichten .
Dies erfordert möglicherweise einige Tests und Anpassungen, scheint jedoch bei meiner Installation zu funktionieren.
after_wp_tiny_mce
für eine Vanille ein handlicher Test-Haken würde installieren, wo ich nicht erwarten , remove_post_type_support( 'post', 'editor' )
oder mehr tinymce Editoren auf einer Seite. Aber andere Hooks würden funktionieren, aber wir müssen sicherstellen, dass Tinymce definiert ist. Aber wir würden unser Plugin versenden, indem wir es wie üblich aus einer .js-Datei in die Warteschlange stellen. @ JanBeck
wpse.set_keydown_for_tinymce()
Teil überspringe , wpse.set_keydown_for_document()
die Strg + {p, s} -Tastenereignisse des Tinymce- Editors nicht abgefangen werden . Deshalb habe ich mich in erster Linie mit dem Tinymce beschäftigt ;-) Wenn das übersprungen werden könnte, wäre das großartig @JanBeck
Die Frage ist alt, aber es gibt ein Plugin für diesen Zweck: https://wordpress.org/plugins/save-with-keyboard/