ページまたは投稿を更新するためのキーボードショートカット


8

ページまたは投稿を更新するためのキーボードショートカットキーは何ですか?ページの下書きのロールダウンには時間がかかるので、時間を大幅に節約できます。

回答:


8

私はこれに興味があり、コーデックスのキーボードショートカットを確認しましたが、そこに記載されていませんでした。

私は検索したところ、これはすでに解決されているようです(ここここなど)

私はこれらの他のプラグインをテストしていないので、それらがどのようにそれを解決するのかわかりませんが、私は挑戦してこれがどのように解決できるかを確認することにしました;-)

だからここにショートカットを作成するための私のハックです:

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

フック内で実行される次のテストプラグインを使用しますafter_wp_tiny_mce

/**
 * 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 });

ページ上のすべてのtinymceエディターにwpse.keydownイベントコールバックを追加したので、そこからもショートカットを利用できます。

tinymce javascriptオブジェクトを扱っているので、私はバニラインストールのafter_wp_tiny_mce便利なテストフックとしてフックを使用していることに注意してください。そのようなプラグインを出荷するときは、通常どおり.jsファイルからエンキューする必要があります。

ここで@bongerが言及しているようにSetupEditortinymceのイベントを使用することもできますが、ここでは、tinymceが定義されているかどうかを確認するための追加のチェックを追加して、定義されていないページでのJavaScriptエラーを回避しています。

// 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();

ネイティブのtinymceショートカットを設定することもできます。

これはいくつかのテストと調整を必要とするかもしれませんが、私のインストールで動作するようです。


ps:ページがテキストモードで読み込まれ、その後ビジュアルモードに戻された場合、tinymce keydownイベントは発生しないことをお伝えしておきます。
バージィ

これをtinymceにフックして背後の編集画面にフックしない理由は何ですか?
Jan Beck

良い質問。私はtinymce javascriptオブジェクトを扱っているので、ページに複数のtinymceエディターをafter_wp_tiny_mce期待しremove_post_type_support( 'post', 'editor' )たり、複数のtinymceエディターを配置したりするバニラインストールの便利なテストフックになると思いました。しかし、他のフックも機能しますが、tinymceが定義されていることを確認する必要があります。ただし、プラグインは通常の方法で.jsファイルからエンキューして出荷します。@JanBeck
2015

.jsファイルとしてエンキューする意図についての説明に感謝します。でも、なぜあなたはtinymceさえまったく気にしないのかと思っています。投稿編集画面にタイトルボックスしか含まれていない場合でも、キーボードショートカットで保存できるようにしたくないですか?問題は、tinymce内で発生するキーボードイベントが「外部」の投稿編集画面に表示されているかどうかです。あなたはそれをテストしましたか?
Jan Beck

テスト中に、このwpse.set_keydown_for_tinymce()部分をスキップするwpse.set_keydown_for_document()と、tinymceエディターからのctrl + {p、s}キーダウンイベントをキャッチしないことがわかりました。だから、私は気に理由のTinyMCEの最初の場所で;-)それはスキップされたことができれば、それは素晴らしい@JanBeckだろう
birgire

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.