Atalho de teclado para atualizar uma página ou postagem?

8

Qual é a tecla de atalho do teclado para atualizar uma página ou postagem? Isso poderia me poupar muito tempo, pois consumir um rascunho de página é demorado.

Paul Felt
fonte

Respostas:

8

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

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

Birgire
fonte
ps: só quero mencionar que, se a página for carregada no modo de Texto e depois retornada ao modo Visual , o evento tinymce keydown não será acionado.
birgire
Qual é o raciocínio por trás de conectar isso ao tinymce e não à tela pós-edição?
Jan Beck
Boa pergunta. Como estou lidando com o objeto javascript tinymce , pensei after_wp_tiny_mceque 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
birgire
Obrigado pelo esclarecimento sobre sua intenção de enfileirá-lo como um arquivo .js. Ainda estou me perguntando, por que você se importa com o tinimo? Mesmo que sua tela de pós-edição contenha apenas uma caixa de título, você ainda não deseja salvar via atalho de teclado? Acho que a pergunta é se os eventos de teclado que acontecem dentro do tinymce estão subindo para a tela de pós-edição "externa". Você já testou isso?
Jan Beck
Durante meus testes, descobri que, se pular a 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
birgire