6 эффективных методов ограничения блоков в WordPress с примерами кода

WordPress – это популярная система управления контентом (CMS), предлагающая ряд мощных функций, включая редактор блоков. Однако могут возникнуть ситуации, когда вы захотите ограничить определенные блоки, чтобы обеспечить лучший контроль над содержимым вашего сайта. В этой статье мы рассмотрим шесть эффективных методов с примерами кода, которые помогут вам достичь этой цели.

Метод 1: использование фильтра «allowed_block_types».
Фильтр «allowed_block_types» позволяет указать блоки, которые разрешены в редакторе. Вы можете добавить этот фрагмент кода в файл function.php вашей темы, чтобы ограничить определенные блоки:

function restrict_blocks($allowed_blocks, $post) {
    $restricted_blocks = array(
        'core/paragraph', // Example restricted block
        'core/image',     // Another restricted block
    );
    if ($post->post_type === 'page') {
        $allowed_blocks = array_diff($allowed_blocks, $restricted_blocks);
    }
    return $allowed_blocks;
}
add_filter('allowed_block_types', 'restrict_blocks', 10, 2);

Метод 2: использование фильтра «allowed_block_types_all».
Подобно методу 1, фильтр «allowed_block_types_all» позволяет глобально ограничивать блоки для всех типов сообщений. Вот пример:

function restrict_blocks_all($allowed_blocks) {
    $restricted_blocks = array(
        'core/paragraph', // Example restricted block
        'core/image',     // Another restricted block
    );
    $allowed_blocks = array_diff($allowed_blocks, $restricted_blocks);
    return $allowed_blocks;
}
add_filter('allowed_block_types_all', 'restrict_blocks_all');

Метод 3: отключение поддержки пользовательских типов сообщений
Если вы используете пользовательские типы сообщений, вы можете отключить поддержку блокировки для определенных типов сообщений, изменив параметр «supports». Вот пример:

function disable_block_support() {
    remove_post_type_support('your_custom_post_type', 'editor');
}
add_action('init', 'disable_block_support');

Метод 4: использование фильтра «block_editor_settings».
Фильтр «block_editor_settings» позволяет изменять настройки редактора, включая ограничения блоков. Вот пример:

function restrict_blocks_settings($settings, $post) {
    $restricted_blocks = array(
        'core/paragraph', // Example restricted block
        'core/image',     // Another restricted block
    );
    if ($post->post_type === 'page') {
        $settings['allowedBlockTypes'] = array_diff($settings['allowedBlockTypes'], $restricted_blocks);
    }
    return $settings;
}
add_filter('block_editor_settings', 'restrict_blocks_settings', 10, 2);

Метод 5: использование плагина.
Если вы предпочитаете удобный подход, вы можете использовать плагин, например «Gutenberg Manager» или «Advanced Gutenberg», чтобы легко управлять ограничениями блоков через интерфейс администратора WordPress.

Метод 6: собственное решение JavaScript
Для опытных пользователей вы можете написать собственный код JavaScript для управления интерфейсом редактора блоков и ограничения определенных блоков. Вот пример:

wp.domReady(() => {
    wp.blocks.unregisterBlockType('core/paragraph'); // Example restricted block
    wp.blocks.unregisterBlockType('core/image');     // Another restricted block
});

Применяя эти методы, вы можете эффективно ограничивать блоки в WordPress и лучше контролировать содержимое вашего веб-сайта. Независимо от того, предпочитаете ли вы решения на основе кода или используете плагины, существуют различные варианты, соответствующие вашим конкретным потребностям. Поэкспериментируйте с этими методами и выберите тот, который подойдет вам лучше всего.