Risposte:
Ero curioso di questo e ho controllato il Codice sulle scorciatoie da tastiera , ma non l'ho trovato menzionato lì.
Ho cercato e scoperto che questo sembra essere già risolto, ad esempio qui e qui .
Non ho testato questi altri plugin, quindi non sono sicuro di come lo risolvano, ma ho deciso di affrontare la sfida e vedere come questo potrebbe essere risolto ;-)
Quindi ecco il mio trucco per la creazione di scorciatoie per:
ctrl+s : Save Draft
ctrl+p : Publish / Update
con il seguente plug-in di prova eseguito all'interno del after_wp_tiny_mce
hook:
/**
* 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 });
Ho aggiunto il wpse.keydown evento di callback per ogni TinyMCE Editor sulla pagina, in modo che i tasti di scelta rapida sarebbero disponibili anche da lì.
Si noti che uso l' after_wp_tiny_mce
hook, come un comodo hook di test su un'installazione vanilla , poiché abbiamo a che fare con l' oggetto javascript tinymce . Quando spediamo un tale plugin, dovremmo accodarlo da un file .js, come al solito.
Potremmo anche usare l' SetupEditor
evento di tinymce , come menzionato qui da @bonger, ma qui ho aggiunto un controllo extra per vedere se tinymce è definito, per evitare errori javascript nelle pagine in cui non è definito:
// 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();
Probabilmente potremmo anche impostare scorciatoie native per il cinema .
Questo potrebbe richiedere alcuni test e modifiche, ma sembra funzionare sulla mia installazione.
after_wp_tiny_mce
sarebbe stato un pratico hook di test per un'installazione vanilla, dove non mi aspetto remove_post_type_support( 'post', 'editor' )
o più editor di tinymce su una pagina. Ma altri hook funzionerebbero, ma dobbiamo assicurarci che sia definito il modo di stagnare . Ma spediremmo il nostro plugin accodandolo da un file .js, nel solito modo. @JanBeck
wpse.set_keydown_for_tinymce()
parte, wpse.set_keydown_for_document()
non avrei catturato gli eventi keydown ctrl + {p, s} dall'editor tinymce . Quindi è per questo che mi sono preso il disturbo con il tinymce in primo luogo ;-) Se ciò potesse essere saltato, sarebbe fantastico @JanBeck
La domanda è vecchia, ma c'è un plugin per questo scopo: https://wordpress.org/plugins/save-with-keyboard/