it-swarm.asia

اختصار لوحة المفاتيح لتحديث الصفحة أو النشر؟

ما هو اختصار لوحة المفاتيح مفتاح تحديث صفحة أو منشور؟ يمكن أن يوفر لي الكثير من الوقت حيث أن الاستغناء عن مسودة الصفحة يستغرق الكثير من الوقت.

8
Paul Felt

كنت مهتمًا بهذا الأمر ودققت في اختصارات لوحة المفاتيح على اختصارات لوحة المفاتيح ، لكن لم أجدها مذكورة هناك.

لقد بحثت ووجدت أن هذا يبدو أنه تم حله بالفعل ، على سبيل المثال هنا و هنا .

لم أختبر هذه المكونات الإضافية الأخرى ، لذلك لست متأكدًا من كيفية حلها ، لكنني قررت مواجهة التحدي ورؤية كيف يمكن حل ذلك ؛-)

لذلك ها هي الاختراق الخاص بي لإنشاء اختصارات لـ:

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

مع المكون الإضافي test الذي يعمل داخل 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 });

أضفت wpse.keydown رد الاتصال بالحدث إلى كل محرر tinymce على الصفحة ، لذلك ستكون الاختصارات متاحة من هناك أيضًا.

لاحظ أنني أستخدم الخطاف after_wp_tiny_mce ، باعتباره ربط اختبار ملائم على Vanilla install ، نظرًا لأننا نتعامل مع كائن javascript tinymce. عندما نقوم بشحن مثل هذا البرنامج المساعد ، يجب أن نقوم بإدخاله من ملف .js ، كالمعتاد.

يمكننا أيضًا استخدام الحدث SetupEditortinymce ، كما ذكر هنا بواسطةbonger ، لكنني أضفت هنا فحصًا إضافيًا لمعرفة ما إذا تم تحديد tinymce لتفادي خطأ جافا سكريبت في الصفحات التي لم يتم تعريفها:

// 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 المحلية أيضًا.

قد يحتاج هذا إلى بعض الاختبارات والتعديلات ، ولكن يبدو أنه يعمل على التثبيت.

8
birgire