Respostas:
Fiquei curioso sobre isso e verifiquei o Codex nos atalhos de teclado , mas não o encontrei mencionado lá.
Eu procurei e descobri que isso já está resolvido, por exemplo, aqui e aqui .
Eu não testei esses outros plugins, então não tenho certeza de como eles o resolvem, mas decidi aceitar o desafio e ver como isso poderia ser resolvido ;-)
Então, aqui está o meu truque para criar atalhos para:
ctrl+s : Save Draft
ctrl+p : Publish / Update
com o seguinte plug-in de teste que é executado dentro do after_wp_tiny_mce
gancho:
/**
* 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 });
Adicionei o retorno de chamada de evento wpse.keydown a todos os editores temporários da página, para que os atalhos também estivessem disponíveis a partir daí.
Observe que eu uso o after_wp_tiny_mce
gancho, como um gancho de teste conveniente em uma instalação de baunilha , pois estamos lidando com o objeto javascript tinymce . Quando enviamos esse plug-in, devemos colocá-lo em um arquivo .js, como de costume.
Também poderíamos usar o SetupEditor
evento tinymce , como mencionado aqui por @bonger, mas aqui eu adicionei uma verificação extra para ver se tinymce está definido, para evitar erros de javascript nas páginas onde ele não está definido:
// 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();
Provavelmente também poderíamos configurar atalhos nativos de tim-tim .
Isso pode precisar de alguns testes e ajustes, mas parece funcionar na minha instalação.
after_wp_tiny_mce
que seria um gancho de teste útil para uma instalação com baunilha, onde não espero remove_post_type_support( 'post', 'editor' )
ou vários editores tinymce em uma página. Mas outros ganchos funcionariam, mas precisamos garantir que o tinymce esteja definido. Mas enviaríamos nosso plugin enfileirando-o de um arquivo .js, da maneira usual. @JanBeck
wpse.set_keydown_for_tinymce()
peça, wpse.set_keydown_for_document()
não capturamos os eventos de teclas pressionadas ctrl + {p, s} no editor tinymce . Então é por isso que se preocupou com o tinymce em primeiro lugar ;-) Se isso pudesse ser ignorado, que seria ótimo @JanBeck
A pergunta é antiga, mas existe um plugin para esse fim: https://wordpress.org/plugins/save-with-keyboard/