Jawaban:
Saya ingin tahu tentang ini dan memeriksa Codex pada pintasan keyboard , tetapi tidak menemukannya disebutkan di sana.
Saya mencari dan menemukan bahwa ini tampaknya sudah diselesaikan, misalnya di sini dan di sini .
Saya belum menguji plugins lain ini jadi saya tidak yakin bagaimana mereka menyelesaikannya, tapi saya memutuskan untuk mengambil tantangan dan melihat bagaimana ini bisa diselesaikan ;-)
Jadi, inilah hack saya untuk membuat pintasan untuk:
ctrl+s : Save Draft
ctrl+p : Publish / Update
dengan plugin tes berikut yang berjalan dalam 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 });
Saya menambahkan wpse.keydown acara-callback untuk setiap TinyMCE editor pada halaman, sehingga shortcut akan tersedia dari sana juga.
Perhatikan bahwa saya menggunakan after_wp_tiny_mce
pengait, sebagai penguji uji convinient pada pemasangan vanilla , karena kita berurusan dengan objek javascript tinymce . Ketika kami mengirimkan plugin semacam itu, kami harus mengeluarkannya dari file .js, seperti biasa.
Kita juga bisa menggunakan SetupEditor
event tinymce , seperti yang disebutkan di sini oleh @bonger, tetapi di sini saya telah menambahkan pemeriksaan tambahan untuk melihat apakah tinymce didefinisikan, untuk menghindari kesalahan javascript pada halaman yang tidak didefinisikan:
// 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();
Kami mungkin bisa menyiapkan pintasan tinymce asli juga.
Ini mungkin memerlukan beberapa pengujian & penyesuaian, tetapi tampaknya berfungsi pada instalasi saya.
after_wp_tiny_mce
akan menjadi penguji yang berguna untuk pemasangan vanilla, di mana saya tidak mengharapkan remove_post_type_support( 'post', 'editor' )
atau beberapa editor tinymce pada halaman. Tetapi pengait lain akan berfungsi, tetapi kita harus memastikan bahwa timah didefinisikan. Tetapi kami akan mengirimkan plugin kami dengan mengirimkannya dari file .js, dengan cara biasa. @ JanBeck
wpse.set_keydown_for_tinymce()
bagian, maka wpse.set_keydown_for_document()
tidak akan menangkap peristiwa keydown ctrl + {p, s} dari editor tinymce . Jadi itu sebabnya saya repot-repot dengan tinymce di tempat pertama ;-) Jika itu bisa dilewati, itu akan menjadi bagus @JanBeck
Pertanyaannya sudah lama, tetapi ada plugin untuk tujuan ini: https://wordpress.org/plugins/save-with-keyboard/