Ответы:
Мне было любопытно по этому поводу и проверил кодекс по сочетаниям клавиш , но не нашел там упомянутого.
Я искал и обнаружил, что это, кажется, уже решено, например, здесь и здесь .
Я не проверял эти другие плагины, поэтому я не уверен, как они решают это, но я решил принять вызов и посмотреть, как это можно решить ;-)
Итак, вот мой хак для создания ярлыков для:
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 });
Я добавил функцию обратного вызова wpse.keydown для каждого редактора tinymce на странице, поэтому ярлыки будут доступны и там.
Обратите внимание, что я использую after_wp_tiny_mce
ловушку в качестве удобного тестового крючка для ванильной установки, поскольку мы имеем дело с объектом javascript tinymce . Когда мы отправляем такой плагин, мы, как обычно, ставим его в очередь из файла .js.
Мы также могли бы использовать SetupEditor
событие tinymce , как упомянуто здесь @bonger, но здесь я добавил дополнительную проверку, чтобы определить, определено ли 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 .
Это может потребовать некоторого тестирования и корректировки, но, похоже, работает на моей установке.
after_wp_tiny_mce
что это будет удобная проверка для ванильной установки, где я не ожидаю remove_post_type_support( 'post', 'editor' )
или несколько редакторов tinymce на странице. Но другие хуки будут работать, но мы должны убедиться, что tinymce определен. Но мы бы поставили наш плагин, поставив его в очередь из файла .js обычным способом. @JanBeck
wpse.set_keydown_for_tinymce()
часть, то wpse.set_keydown_for_document()
не получит события нажатия клавиш ctrl + {p, s} из редактора tinymce . Так вот почему я в первую очередь беспокоился о лакомом ;-) Если бы это можно было пропустить, это было бы здорово @JanBeck
Вопрос старый, но для этого есть плагин: https://wordpress.org/plugins/save-with-keyboard/