WordPress shortcut to switch from Visual to Text mode and vice versa

I use a default WordPress editor TinyMCE.

Maybe it is simple, but I lack that shortcut to switch from Visual to Text mode, and the opposite from Text to Visual.

enter image description here

I searched in here but haven’t found a clue.

This would be handy when I am at the page bottom in WordPress Editor and in a need to change the mode.

The context what am I actually doing should be ignored. Just the shortcut would be great to share.

Please, let me know if I can improve the question better, or if there is anything more I can provide.

1 Answer
1

There are no shortcuts, but you could add some by eg adding accesskeys to the editor html generated (in your theme’s “functions.php”):

function mytheme_edit_form_after_title( $post ) {
    ob_start();
}
function mytheme_edit_form_after_editor( $post ) {
    echo str_replace(
        array( 'id="content-tmce"', 'id="content-html"' ),
        array( 'id="content-tmce" accesskey="V"', 'id="content-html" accesskey="E"' ), // 'T' already used for 'Insert Read More tag'. 
        ob_get_clean()
    );
}
add_action( 'edit_form_after_title', 'mytheme_edit_form_after_title' );
add_action( 'edit_form_after_editor', 'mytheme_edit_form_after_editor' );

Update: unfortunately this doesn’t work on Chrome (and not very well on FF either), maybe the TinyMCE shortcut processing is interfering, so adding an explicit shortcut also seems to make it work better (append the following after the above):

add_action( 'wp_tiny_mce_init', function () {
    ?>
    <script type="text/javascript">
        function wpse245062_tiny_mce_init( ed ) {
            ed.on( 'init', function () {
                this.addShortcut( 'alt+shift+e', '', function () {
                    jQuery( '#content-html' ).click();
                    jQuery( '#content' ).focus();
                } );
            } );
        }
    </script>
    <?php
} );
add_filter( 'tiny_mce_before_init', function ( $mceInit ) {
    $mceInit['setup'] = 'wpse245062_tiny_mce_init';
    return $mceInit;
} );

Leave a Comment