Respuestas:
Tenía curiosidad sobre esto y revisé el Codex en los atajos de teclado , pero no lo encontré mencionado allí.
Busqué y descubrí que esto parece estar resuelto, por ejemplo, aquí y aquí .
No he probado estos otros complementos, así que no estoy seguro de cómo lo resuelven, pero decidí asumir el desafío y ver cómo se podría resolver esto ;-)
Así que aquí está mi truco para crear accesos directos para:
ctrl+s : Save Draft
ctrl+p : Publish / Update
con el siguiente complemento de prueba que se ejecuta dentro del after_wp_tiny_mce
gancho:
/**
* 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 });
He añadido el wpse.keydown evento de devolución de llamada para cada tinymce editor de la página, por lo que los accesos directos estarían disponibles a partir de ahí también.
Tenga en cuenta que uso el after_wp_tiny_mce
gancho, como un gancho de prueba conveniente en una instalación de vainilla , ya que estamos tratando con el objeto javascript tinymce . Cuando enviamos un complemento de este tipo, debemos ponerlo en cola desde un archivo .js, como de costumbre.
También podríamos usar el SetupEditor
evento de tinymce , como se menciona aquí por @bonger, pero aquí he agregado una comprobación adicional para ver si se define tinymce , para evitar errores de JavaScript en páginas donde no está definido:
// 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();
Probablemente también podríamos configurar atajos nativos de tinymce .
Esto podría necesitar algunas pruebas y ajustes, pero parece funcionar en mi instalación.
after_wp_tiny_mce
que sería un práctico gancho de prueba para una instalación de vainilla, donde no esperaba remove_post_type_support( 'post', 'editor' )
o múltiples editores tinymce en una página. Pero otros ganchos funcionarían, pero tenemos que asegurarnos de que se haya definido tinymce . Pero enviaríamos nuestro complemento poniéndolo en cola desde un archivo .js, de la forma habitual. @JanBeck
wpse.set_keydown_for_tinymce()
parte, wpse.set_keydown_for_document()
no capturaré los eventos de keydown ctrl + {p, s} del editor tinymce . Así que por eso me molesté con el tinymce en primer lugar ;-) Si eso se pudiera omitir, sería genial @ JanBeck
La pregunta es antigua, pero hay un complemento para este propósito: https://wordpress.org/plugins/save-with-keyboard/