Вопрос или проблема
Я ограничил доступ пользователей к блокам, используя 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 и предотвратить их использование пользователями на вашем сайте, вы можете воспользоваться следующим методом:
- Используйте хук для отключения шорткатов: Для начала вам нужно воспользоваться хуком
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');
-
Дополнительная настройка: Убедитесь, что изменения в коде не приводят к ошибкам в других функциональностях вашей панели управления. Тщательно протестируйте, что ваши пользователи могут по-прежнему выполнять необходимые действия, и не забывайте, что отключение шорткатов может повлиять на удобство работы для администраторов.
-
Проверка: После внесения изменений зайдите в редактор блоков и попытайтесь использовать команды, такие как
/
, чтобы убедиться, что они больше не работают. -
Фильтрация доступных блоков: Если вы еще не сделали этого, продолжайте использовать ваш код с фильтром
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, не стесняйтесь задавать их!