add_editor_style()
Подключает CSS-файлы для оформления содержимого редактора блоков и визуального редактора TinyMCE.
Функция регистрирует файлы, которые WordPress подключает при настройке редактора. Отсутствующие локальные файлы пропускаются. При вызове без аргументов используется файл editor-style.css из папки темы.
Если используется дочерняя тема:
- TinyMCE подключает найденные файлы обеих тем: сначала родительской, затем дочерней.
- Редактор блоков использует файл дочерней темы, а при его отсутствии - файл родительской.
Для редактора блоков классическая тема должна объявить поддержку add_theme_support( 'editor-styles' ). В блочных темах она включена автоматически.
Сама функция включает поддержку editor-style, без s на конце. Это другая настройка.
Подробнее читайте здесь.
Когда вызывать функцию?
Для регистрации стилей темы рекомендуется хук after_setup_theme.
Для выбора файла по типу редактируемой записи подходит current_screen: тип записи уже известен, а стили редактора ещё не подключены.
Вызовы на init и admin_init также допустимы. Важно зарегистрировать файлы до настройки редактора.
Для подключения CSS из другого места, например из плагина, можно передать полный HTTP/HTTPS URL.
Для TinyMCE также можно использовать фильтр mce_css.
RTL (письмо справа налево)
При is_rtl() = true функция дополнительно регистрирует RTL-вариант первого файла: например, для editor-style.css добавляется editor-style-rtl.css.
Если передан массив, суффикс -rtl добавляется только для первого файла. Отсутствующий локальный RTL-файл пропускается при подключении.
Тег <body> в TinyMCE имеет класс .rtl, поэтому RTL-правила можно разместить в основном файле, используя селектор body.rtl.
Относительные пути и параметры URL
Для относительных путей WordPress проверяет существование файла: через file_exists() в TinyMCE и is_file() в редакторе блоков.
Поэтому относительный путь editor.css?ver=1.0 не работает: строка запроса воспринимается как часть имени файла. Полный URL может содержать параметры запроса.
Обработка CSS в редакторе блоков
В TinyMCE файл загружается без преобразования. В редакторе блоков WordPress читает CSS и добавляет его как встроенные стили.
Селекторы адаптируются к области содержимого. Например, body { color: red; } преобразуется в .editor-styles-wrapper { color: red; }.
Общий CSS reset может затронуть элементы управления внутри области редактирования. Поэтому для редактора лучше использовать отдельный файл или ограниченный набор правил.
Похожие хуки:
- enqueue_block_assets - позволяет подключить стили и скрипты для фронтенда и содержимого редактора блоков, в том числе внутри iframe. Подходит для общих ресурсов блоков.
- enqueue_block_editor_assets - позволяет подключить ресурсы интерфейса редактора: панелей настроек, кнопок и других элементов управления.
Хуков нет.
Возвращает
null. Ничего не возвращает.
Использование
add_editor_style( $stylesheet );
- $stylesheet(строка/массив)
Путь к CSS-файлу относительно папки темы или полный HTTP/HTTPS URL.
Например, для файла в корне темы укажите
my-editor-style.css, а для файла в подпапке -css/editor.css.Несколько файлов передавайте массивом.
По умолчанию: 'editor-style.css'
Примеры
#1 Подключение стилей к визуальному редактору TinyMCE
Добавьте в functions.php темы:
add_action( 'after_setup_theme', 'my_theme_add_editor_styles' );
function my_theme_add_editor_styles() {
add_editor_style( 'editor-styles.css' );
}
Создайте файл editor-styles.css в корне темы. Например:
body#tinymce.wp-editor {
font-family: Arial, Helvetica, sans-serif;
margin: 10px;
}
body#tinymce.wp-editor a {
color: #4ca6cf;
}
Эти селекторы предназначены для TinyMCE. Для редактора блоков используйте обычные селекторы, как в примере №5.
#2 Использование стилей темы
Для TinyMCE можно импортировать стили темы в файл editor-styles.css:
@import url( 'style.css' );
body {
padding: 0;
background: #fff;
}
Путь в @import отсчитывается от расположения файла editor-styles.css. Если оба файла находятся в корне темы, достаточно style.css. Если файл темы находится в подпапке css, укажите css/style.css.
Для редактора блоков предпочтительнее зарегистрировать файлы отдельно:
add_action( 'after_setup_theme', 'my_theme_add_editor_styles' );
function my_theme_add_editor_styles() {
add_theme_support( 'editor-styles' );
add_editor_style( [
'style.css',
'editor-styles.css',
] );
}
Проверьте, что общие стили темы не нарушают работу элементов редактора.
#3 Выбор файла стилей по типу записи
Пример подключает editor_styles_post.css для записей и editor_styles_page.css для страниц. Файлы должны находиться в корне темы.
add_action( 'after_setup_theme', 'my_theme_setup_editor_styles' );
add_action( 'current_screen', 'my_theme_add_post_type_editor_styles' );
function my_theme_setup_editor_styles() {
add_theme_support( 'editor-styles' );
}
function my_theme_add_post_type_editor_styles( $screen ) {
if ( 'post' !== $screen->base ) {
return;
}
$styles = [
'post' => 'editor_styles_post.css',
'page' => 'editor_styles_page.css',
];
if ( isset( $styles[ $screen->post_type ] ) ) {
add_editor_style( $styles[ $screen->post_type ] );
}
}
Работает на экранах создания и редактирования записи.
#4 Использование шрифтов Google
Можно передать URL файла CSS с описанием шрифта:
add_action( 'after_setup_theme', 'my_theme_add_editor_fonts' );
function my_theme_add_editor_fonts() {
add_theme_support( 'editor-styles' );
add_editor_style( [
'https://fonts.googleapis.com/css?family=Lato:300,400,700',
'editor-styles.css',
] );
}
В файле editor-styles.css задайте шрифт:
body {
font-family: 'Lato', sans-serif;
}
Запятые в URL перед подключением к TinyMCE WordPress кодирует автоматически.
В редакторе блоков CSS по URL загружается сервером через wp_remote_get(). Поэтому URL должен быть доступен серверу. Ошибка запроса, например из-за самоподписанного SSL-сертификата, препятствует загрузке CSS.
#5 Стили для редактора блоков
add_action( 'after_setup_theme', 'guten_editor_styles' );
function guten_editor_styles() {
add_theme_support( 'editor-styles' );
add_editor_style( 'style-editor.css' );
}
В блочной теме строку add_theme_support( 'editor-styles' ) можно убрать: эта поддержка включена автоматически.
Создайте файл style-editor.css в корне темы:
body {
font-family: Arial, sans-serif;
color: #222;
background-color: #fff;
}
a {
color: #0073aa;
}
Правила для body применятся к области содержимого редактора.
Подробнее читайте здесь.
Заметки
Global. Массив. $editor_styles |
Список изменений
| С версии 3.0.0 | Введена. |
Код add_editor_style() add editor style WP 7.1.3
function add_editor_style( $stylesheet = 'editor-style.css' ) {
global $editor_styles;
add_theme_support( 'editor-style' );
$editor_styles = (array) $editor_styles;
$stylesheet = (array) $stylesheet;
if ( is_rtl() ) {
$rtl_stylesheet = str_replace( '.css', '-rtl.css', $stylesheet[0] );
$stylesheet[] = $rtl_stylesheet;
}
$editor_styles = array_merge( $editor_styles, $stylesheet );
}