web-dev-qa-db-fra.com

Raccourci clavier pour mettre à jour une page ou une publication?

Qu'est-ce que la touche raccourci clavier pour mettre à jour une page ou une publication? Cela pourrait me faire gagner beaucoup de temps, car rédiger un brouillon de page prend beaucoup de temps.

8
Paul Felt

J'étais curieux à ce sujet et j'ai consulté le Codex sur les raccourcis clavier , mais je ne l'ai pas trouvé mentionné.

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, je ne suis donc pas sûr de la façon dont ils le résolvent, mais j'ai décidé de relever le défi et de voir comment résoudre ce problème ;-)

Alors, voici mon hack pour créer des raccourcis pour:

ctrl+s : Save Draft
ctrl+p : Publish / Update

avec le test plugin} _ suivant qui s'exécute dans le 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 });

J'ai ajouté le wpse.keydown event-callback à chaque éditeur tinymce de la page, afin que les raccourcis soient également disponibles à partir de cet éditeur.

Notez que j’utilise le hook after_wp_tiny_mce comme test pratique sur un Vanilla install, car nous traitons de l’objet tinymce javascript. Lorsque nous envoyons un tel plugin, nous devrions le mettre en file d'attente à partir d'un fichier .js, comme d'habitude.

Nous pourrions également utiliser l'événement SetupEditor de tinymce, comme mentionné ici par @bonger, mais ici j'ai ajouté une vérification supplémentaire pour voir si tinymce est défini, à éviter les erreurs 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 également configurer des raccourcis natifs tinymce.

Cela pourrait nécessiter des tests et des ajustements, mais cela semble fonctionner sur mon installation.

8
birgire