Как добавить add_editor_style как для tinyMCE, так и для Gutenberg

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

До блоков Гутенберга мы добавляли стили редактора, используя

add_editor_style( array( 'path/to/editor-style.css', 'whatever.css' ) );

Сейчас у нас есть редактор Гутенберг, чей файл стилей также загружается с использованием той же функции.

Что делать, если мы хотим сохранить стили для обоих? Спрашиваю, потому что есть плагины, которые позволяют пользователям отключать Гутенберг. Очевидно, что невозможно сделать что-то вроде:

 add_editor_style( array( 'editor-style-mce.css', 'editor-style-gutenberg.css' ) );

Чтобы усложнить жизнь разработчикам, есть возможность использовать классический редактор как блок Гутенберга. Похоже, мы должны проверять доступность Гутенберга в действии after_setup_theme и соответственно загружать правильный файл стилей редактора, но мы мало что можем сделать, когда классический редактор используется как блок Гутенберга.

Есть ли кто-то, кто может предложить какое-либо решение?

Вам нужно вызвать add_theme_support( 'editor-styles' ) в хуке after_setup_theme.

Больше информации

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

В начале важно понять, что с появлением редактора Gutenberg в WordPress подход к добавлению пользовательских стилей претерпел значительные изменения. Ранее мы использовали функцию add_editor_style(), чтобы добавить CSS-стили к старому редактору TinyMCE, но с введением Gutenberg требования изменились.

Теория

Исторически функция add_editor_style() использовалась для подключения пользовательского CSS к TinyMCE в классическом редакторе WordPress. Она принимала массив путей к файлам стилей, которые вы хотели загрузить в редактор. Однако, с переходом на Gutenberg, более комплексный блоковый редактор, необходимо управлять стилями по-другому. Gutenberg требует подключения стилей, чтобы обеспечить единообразный вид и ощущение как в редакторе, так и в пользовательской части сайта.

Для того чтобы ваш сайт был готов к различным сценариям работы с контентом — будь то с помощью Gutenberg, классического редактора или даже в случае, когда классический редактор используется как блок Gutenberg — необходимо включить поддержку стилей для редактора, правильно загрузив соответствующие файлы стилей. Gutenberg использует add_theme_support('editor-styles') вместе с add_editor_style(), чтобы обеспечить поддержку блоков.

Пример

В реальной практике это может выглядеть следующим образом:

  1. В файле функций темы (functions.php) добавьте поддержку стилей редактора для Gutenberg, используя add_theme_support('editor-styles').

  2. Затем определите два разных файла стилей: один для TinyMCE (editor-style-mce.css), а другой для Gutenberg (editor-style-gutenberg.css).

  3. Вам нужно будет создать условия для их выбора в зависимости от того, какой редактор используется в данный момент. Однако, помните, что Gutenberg может использоваться совместно с классическим редактором в виде блока, что делает определение условия сложнее.

function my_theme_setup() {
    add_theme_support('editor-styles');
    add_editor_style(array('editor-style-mce.css', 'editor-style-gutenberg.css'));

    // Подключаем стили для Gutenberg
    add_action('enqueue_block_editor_assets', function() {
        wp_enqueue_style('theme-gutenberg-editor-styles', get_template_directory_uri() . '/editor-style-gutenberg.css');
    });
}

add_action('after_setup_theme', 'my_theme_setup');

Применение

Проблемы, возникающие с использованием нескольких редакторов, решаются путем индивидуального подхода к настройке стилей для каждого редактора. Это достигается с помощью wp_enqueue_style() и специфических условий загрузки стилей.

Если пользователь вашего сайта отключит Gutenberg или использует плагин, возвращающий классический редактор, стили для TinyMCE по-прежнему будут применяться через add_editor_style(). Для Gutenberg стили будут автоматом применяться через хук enqueue_block_editor_assets. Это позволяет сохранить одинаковый дизайн в редакторе и на фронтальной части сайта независимо от предпочтений пользователя или установленных плагинов.

Однако важным моментом остается применение кастомных стилей. Разработчикам нужно учитывать, что стили должны поддерживать не только верстку контента, но и взаимодействие пользователя с различными блоками, будь то базовые текстовые блоки или сложные мультимедийные элементы. Ваши CSS-стили должны быть адаптированы для работы в различных условиях. Это может включать использование CSS custom properties и flexbox/grid для лучшего управления макетом.

Подобный подход обеспечивает уверенность в том, что вне зависимости от выбранного редактора пользователем или от комбинации редакторов, ваш сайт и контент останутся визуально привлекательными и функциональными.

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

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