Réponses:
J'étais curieux à ce sujet et j'ai vérifié le Codex sur les raccourcis clavier , mais je ne l'ai pas trouvé mentionné ici.
J'ai cherché et découvert que cela semble être déjà résolu, par exemple ici et ici .
Je n'ai pas testé ces autres plugins, donc je ne sais pas comment ils le résolvent, mais j'ai décidé de relever le défi et de voir comment cela pourrait être résolu ;-)
Voici donc mon hack pour créer des raccourcis pour:
ctrl+s : Save Draft
ctrl+p : Publish / Update
avec le plugin de test suivant qui s'exécute dans le after_wp_tiny_mce
crochet:
/**
* 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 });
J'ai ajouté le rappel d' événement wpse.keydown à chaque éditeur de tinymce sur la page, de sorte que les raccourcis seraient également disponibles à partir de là.
Notez que j'utilise le after_wp_tiny_mce
hook, en tant que hook de test pratique sur une installation vanilla , car nous avons affaire à l' objet javascript tinymce . Lorsque nous expédions un tel plugin, nous devons le mettre en file d'attente à partir d'un fichier .js, comme d'habitude.
Nous pourrions également utiliser l' SetupEditor
événement de tinymce , comme mentionné ici par @bonger, mais ici j'ai ajouté une vérification supplémentaire pour voir si tinymce est défini, pour éviter l'erreur javascript sur les pages où il n'est pas défini:
// 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();
Nous pourrions probablement configurer natifs TinyMCE raccourcis ainsi.
Cela pourrait nécessiter des tests et des ajustements, mais cela semble fonctionner sur mon installation.
after_wp_tiny_mce
serait un crochet de test pratique pour une installation vanilla, où je ne m'attends pas remove_post_type_support( 'post', 'editor' )
ou plusieurs éditeurs tinymce sur une page. Mais d'autres crochets fonctionneraient, mais nous devons nous assurer que tinymce est défini. Mais nous expédions notre plugin en le mettant en file d'attente à partir d'un fichier .js, de la manière habituelle. @JanBeck
wpse.set_keydown_for_tinymce()
partie, wpse.set_keydown_for_document()
je n'attraperais pas les événements de raccourci ctrl + {p, s} de l' éditeur tinymce . C'est pourquoi j'ai pris la peine de tinymce en premier lieu ;-) Si cela pouvait être ignoré, ce serait génial @JanBeck
La question est ancienne, mais il existe un plugin à cet effet: https://wordpress.org/plugins/save-with-keyboard/