Как отключить сочетания клавиш в WordPress?

Вопрос или проблема

Я ограничил доступ пользователей к блокам, используя add_filter( 'allowed_block_types', и это ограничивает выбор блоков, которые могут добавлять пользователи. Однако это можно обойти с помощью сокращений. Например, с помощью команды / появляется список блоков, которые не должны быть доступны пользователям. Есть ли способ полностью отключить сокращения?

function restrict_blocks( $block_types, $post ) {
        $allowed = [
        'core/paragraph',
        'core/heading',
        'core/pullquote',
        'core/table',
        'core/audio',
        'core/image',
        'core/shortcode',
        'core/embed'
    ];
    
    if( is_user_logged_in() && ! current_user_can( 'activate_plugins' ) ) {
        return $allowed;
    }
    return $block_types;
}
add_filter( 'allowed_block_types', 'restrict_blocks', 10, 2);

Я также пытался отключить скрипты, однако это не зарегистрировалось.

wp_dequeue_script( 'wp-keyboard-shortcuts' );
wp_deregister_script( 'wp-keyboard-shortcuts' );

Ответ или решение

Чтобы полностью отключить клавиши быстрого доступа (шорткаты) в WordPress и предотвратить их использование пользователями на вашем сайте, вы можете воспользоваться следующим методом:

  1. Используйте хук для отключения шорткатов: Для начала вам нужно воспользоваться хуком admin_enqueue_scripts, чтобы отключить скрипт, который отвечает за обработку шорткатов. В вашем случае, вместо того чтобы деактивировать сам скрипт, можно просто отключить его действия.

Вот пример кода, который вы можете добавить в файл functions.php вашей темы или в плагин:

function disable_keyboard_shortcuts() {
    if (is_admin()) {
        // Удаляем обработку клавиатурных шорткатов
        wp_dequeue_script('wp-keyboard-shortcuts');
    }
}
add_action('admin_enqueue_scripts', 'disable_keyboard_shortcuts');
  1. Дополнительная настройка: Убедитесь, что изменения в коде не приводят к ошибкам в других функциональностях вашей панели управления. Тщательно протестируйте, что ваши пользователи могут по-прежнему выполнять необходимые действия, и не забывайте, что отключение шорткатов может повлиять на удобство работы для администраторов.

  2. Проверка: После внесения изменений зайдите в редактор блоков и попытайтесь использовать команды, такие как /, чтобы убедиться, что они больше не работают.

  3. Фильтрация доступных блоков: Если вы еще не сделали этого, продолжайте использовать ваш код с фильтром allowed_block_types, чтобы контролировать, какие блоки могут использовать пользователи. Ваш код остается правильным:

function restrict_blocks( $block_types, $post ) {
    $allowed = [
        'core/paragraph',
        'core/heading',
        'core/pullquote',
        'core/table',
        'core/audio',
        'core/image',
        'core/shortcode',
        'core/embed'
    ];

    if ( is_user_logged_in() && ! current_user_can( 'activate_plugins' ) ) {
        return $allowed;
    }
    return $block_types;
}
add_filter( 'allowed_block_types', 'restrict_blocks', 10, 2);

Объединив эти два подхода, вы сможете заблокировать как доступ к нежелательным блокам, так и их активацию через шорткаты. Если у вас возникнут дальнейшие вопросы или потребуется помощь по другим аспектам настройки WordPress, не стесняйтесь задавать их!

Оцените материал
Добавить комментарий

Капча загружается...