Scorciatoia da tastiera per l'aggiornamento di una pagina o di un post?


8

Qual è il tasto di scelta rapida da tastiera per l' aggiornamento di una pagina o di un post? Potrebbe risparmiarmi un sacco di tempo in quanto il roll down di una bozza di pagina richiede tempo.

Risposte:


8

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_mcehook:

/**
 * 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_mcehook, 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' SetupEditorevento 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.


ps: voglio solo menzionare che se la pagina viene caricata in modalità Testo e poi ritorna in modalità Visiva , l'evento keydown tinymce non si attiverà.
Birgire,

Qual è il ragionamento alla base dell'aggancio a tinymce e non alla schermata di modifica post?
Jan Beck,

Buona domanda. Dato che ho a che fare con l' oggetto javascript di tinymce , ho pensato che after_wp_tiny_mcesarebbe 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
birgire,

Grazie per il chiarimento sulla tua intenzione di accodarlo come file .js. Mi sto ancora chiedendo, perché ti preoccupi persino di Tinince. Anche se la schermata di modifica del tuo post contiene solo una casella del titolo, non vorresti comunque poter salvare tramite la scorciatoia da tastiera? Immagino che la domanda sia se gli eventi della tastiera che si verificano all'interno della stagnatura si stanno diffondendo nella schermata di post editing "esterna". L'hai provato?
Jan Beck,

Durante i miei test, ho scoperto che se saltavo la 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
birgire

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.