Phím tắt để cập nhật một trang hoặc bài viết?


8

Là gì phím tắt quan trọng cho việc cập nhật một trang hoặc bài? Nó có thể giúp tôi tiết kiệm rất nhiều thời gian vì việc cuộn xuống một bản thảo trang là tốn thời gian.

Câu trả lời:


8

Tôi tò mò về điều này và đã kiểm tra Codex trên các phím tắt , nhưng không thấy nó được đề cập ở đó.

Tôi đã tìm kiếm và phát hiện ra rằng điều này dường như đã được giải quyết, ví dụ ở đâyđây .

Tôi chưa thử nghiệm các plugin khác này vì vậy tôi không chắc chúng giải quyết nó như thế nào, nhưng tôi quyết định chấp nhận thử thách và xem cách giải quyết vấn đề này ;-)

Vì vậy, đây là hack của tôi để tạo lối tắt cho:

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

với plugin kiểm tra sau chạy trong 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 });

Tôi đã thêm cuộc gọi lại sự kiện wpse.keydown cho mọi trình soạn thảo tinymce trên trang, vì vậy các phím tắt cũng sẽ có sẵn từ đó.

Lưu ý rằng tôi sử dụng after_wp_tiny_mcehook, như một hook thử nghiệm thuận tiện khi cài đặt vanilla , vì chúng ta đang xử lý đối tượng javascript tinymce . Khi chúng tôi gửi một plugin như vậy, chúng tôi nên liệt kê nó từ tệp .js, như thường lệ.

Chúng tôi cũng có thể sử dụng SetupEditorsự kiện tinymce , như được đề cập ở đây bởi @bonger, nhưng ở đây tôi đã thêm một kiểm tra bổ sung để xem liệu tinymce có được xác định hay không, để tránh lỗi javascript trên các trang không được xác định:

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

Chúng tôi có lẽ cũng có thể thiết lập các phím tắt tinymce bản địa .

Điều này có thể cần một số thử nghiệm và điều chỉnh, nhưng nó dường như hoạt động trên cài đặt của tôi.


ps: chỉ muốn đề cập rằng nếu trang được tải ở chế độ Văn bản và sau đó được chuyển về chế độ Trực quan , sự kiện khóa phím tinymce sẽ không kích hoạt.
bạch dương

Lý do đằng sau việc nối cái này vào tinymce và không vào màn hình chỉnh sửa bài viết là gì?
Jan Beck

Câu hỏi hay. Vì tôi đang xử lý đối tượng javascript tinymce , nên tôi nghĩ after_wp_tiny_mcesẽ là một móc thử nghiệm tiện dụng cho việc cài đặt vanilla, nơi tôi không mong đợi remove_post_type_support( 'post', 'editor' )hoặc có nhiều trình soạn thảo tinymce trên một trang. Nhưng các móc khác sẽ hoạt động, nhưng chúng ta phải đảm bảo tinymce được xác định. Nhưng chúng tôi sẽ gửi plugin của mình bằng cách liệt kê nó từ tệp .js, theo cách thông thường. @JanBeck
bạch dương

Cảm ơn bạn đã làm rõ về ý định của bạn để ghi lại nó dưới dạng tệp .js. Mặc dù vậy, tôi vẫn đang tự hỏi, tại sao bạn thậm chí quan tâm đến tinymce. Ngay cả khi màn hình chỉnh sửa bài đăng của bạn chỉ chứa một hộp tiêu đề, bạn vẫn không muốn lưu thông qua phím tắt chứ? Tôi đoán câu hỏi là liệu các sự kiện bàn phím xảy ra bên trong tinymce có sủi bọt vào màn hình chỉnh sửa bài "bên ngoài" hay không. Bạn đã thử chưa?
Jan Beck

Trong quá trình thử nghiệm của mình, tôi phát hiện ra rằng nếu tôi bỏ qua wpse.set_keydown_for_tinymce()phần đó, thì wpse.set_keydown_for_document()sẽ không bắt được các sự kiện phím tắt ctrl + {p, s} từ trình soạn thảo tinymce . Vì vậy, đó là lý do tại sao tôi bận tâm với tinymce ở nơi đầu tiên ;-) Nếu điều đó có thể bị bỏ qua, đó sẽ là điều tuyệt vời @JanBeck
birgire

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.