block_editor_settings_allхук-фильтрWP 5.8.0

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

Этот фильтр даёт возможность перехватить массив настроек $editor_settings перед их использованием редактором и изменить любые параметры, например размер загрузок, включение/отключение частей UI, стандартные стили и др.

Можно точно настроить поведение редактора в зависимости от контекста (обычная запись, страница, пользовательские типы записей) — для этого имеется объект WP_Block_Editor_Context с информацией о контексте в котором работает текущий редактор.

Введён в WP 5.8. До этого использовался устаревший хук block_editor_settings.

Использование

add_filter( 'block_editor_settings_all', 'wp_kama_block_editor_settings_all_filter', 10, 2 );

/**
 * Function for `block_editor_settings_all` filter-hook.
 * 
 * @param array                   $editor_settings      Default editor settings.
 * @param WP_Block_Editor_Context $block_editor_context The current block editor context.
 *
 * @return array
 */
function wp_kama_block_editor_settings_all_filter( $editor_settings, $block_editor_context ){

	// filter...
	return $editor_settings;
}
$editor_settings(массив)

Массив настроек редактора.

Список всех полей (WP 6.8):

$settings = [
	'__experimentalAdditionalBlockPatternCategories' => [], // Дополнительные категории паттернов блоков, которые можно добавить в редактор.
	'__experimentalAdditionalBlockPatterns'          => [], // Дополнительные паттерны блоков, которые будут зарегистрированы в редакторе.
	'__experimentalDashboardLink'                    => 'http://pbnwp.loc/wp-admin/', // Ссылка на панель управления (используется в редакторе сайта).
	'__experimentalDiscussionSettings'               => [], // Настройки обсуждений (комментариев) для редактора.
	'__experimentalFeatures'                         => [], // Настройки новых возможностей, связанных с блоками, темами и др. (из theme.json).
	'__unstableGalleryWithImageBlocks'               => true, // Включает новый тип галереи, где каждая картинка — отдельный блок Image.
	'__unstableIsBlockBasedTheme'                    => true, // Показывает, используется ли блочная тема (на базе theme.json и шаблонов в блоках).
	'__unstableResolvedAssets'                       => [], // Ассеты, которые были автоматически разрешены и передаются в редактор.
	'alignWide'                 => false, // Разрешить ли использование выравнивания `wide` и `full` для блоков.
	'allowedBlockTypes'         => true, // Указывает, какие блоки разрешены. `true` — все, `false` — ни один, массив — конкретные.
	'allowedMimeTypes'          => [], // Разрешённые типы файлов для загрузки.
	'autosaveInterval'          => 60, // Интервал автосохранения (в секундах).
	'availableTemplates'        => [], // Доступные шаблоны записей для текущего поста.
	'blockCategories'           => [], // Список категорий блоков для отображения в редакторе.
	'bodyPlaceholder'           => 'Type / to choose a block', // Текст-заполнитель в основном поле редактирования содержимого.
	'canUpdateBlockBindings'    => true, // Разрешено ли обновлять связи данных в блоках (binding API).
	'colors'                    => [], // Палитра цветов, доступных для блоков.
	'defaultEditorStyles'       => [], // Стили по умолчанию, применяемые к редактору.
	'defaultTemplatePartAreas'  => [], // Список стандартных зон для template parts.
	'disableCustomColors'       => true, // Отключить выбор пользовательских цветов.
	'disableCustomFontSizes'    => true, // Отключить пользовательские размеры шрифтов.
	'disableCustomGradients'    => true, // Отключить пользовательские градиенты.
	'disableCustomSpacingSizes' => true, // Отключить пользовательские отступы.
	'disableLayoutStyles'       => false, // Отключить автоматическое добавление CSS для layout.
	'disablePostFormats'        => true, // Отключить выбор форматов записи.
	'enableCustomLineHeight'    => false, // Разрешить настройку межстрочного интервала.
	'enableCustomSpacing'       => true, // Разрешить настройку отступов (padding, margin).
	'enableCustomUnits'         => [], // Список единиц измерения, доступных для ввода (например, px, em, % и др.).
	'fontSizes'                 => [], // Предопределённые размеры шрифта.
	'gradients'                 => [], // Предопределённые градиенты.
	'imageDefaultSize'          => 'large', // Размер изображений по умолчанию при вставке.
	'imageDimensions'           => [], // Размеры изображений, доступные для изменения.
	'imageEditing'              => true, // Включить или отключить редактирование изображений.
	'imageSizes'                => [], // Список всех доступных размеров изображений.
	'isRTL'                     => false, // Активна ли RTL-направленность интерфейса (письмо справа налево).
	'localAutosaveInterval'     => 15, // Интервал локального автосохранения (в секундах, хранится в браузере).
	'maxUploadFileSize'         => 1536000, // Максимальный размер загружаемого файла (в байтах).
	'postContentAttributes'     => [], // Атрибуты, передаваемые контейнеру блока контента.
	'postLock'                  => [], // Информация о блокировке редактирования записи другим пользователем.
	'postLockUtils'             => [], // Функции и настройки, связанные с блокировкой записи.
	'richEditingEnabled'        => true, // Включён ли визуальный редактор (rich text).
	'spacingSizes'              => [], // Предопределённые размеры отступов.
	'styles'                    => [], // Все применяемые стили темы (собранные из theme.json, пользовательские и др.).
	'supportsLayout'            => true, // Поддержка layout-функций в редакторе.
	'supportsTemplateMode'      => true, // Включить поддержку редактирования шаблонов (template mode).
	'titlePlaceholder'          => 'Add title', // Текст-заполнитель в поле заголовка записи.

	// additional settings
	'__experimentalBlockDirectory'           => true, // Включает поддержку установки блоков из каталога блоков WordPress.
	'__experimentalGlobalStylesBaseStyles'   => [], // Базовые стили глобальных стилей (из theme.json).
	'__unstableHasCustomAppender'            => false, // Управляет отображением кастомной кнопки добавления блоков.
	'blockInspectorTabs'                     => [ 'default' => true ], // Управляет отображением вкладок панели инспектора блоков (настройки, стили и т.п.).
	'canLockBlocks'                          => true, // Управление возможностью блокировки перемещения/удаления блоков.
	'capabilities'                           => [], // Возможности текущего пользователя (например, может ли он публиковать, редактировать и т.д.).
	'clearBlockSelection'                    => false, // Сброс выделения блоков при определённых действиях (внутреннее).
	'codeEditingEnabled'                     => true, // Разрешён ли режим редактирования кода (HTML) пользователю.
	'enableOpenverseMediaCategory'           => true, // Включает вкладку Openverse в медиабраузере.
	'generateAnchors'                        => true, // Автоматическое создание HTML-якорей для блоков (например, заголовков).
	'isPreviewMode'                          => false, // Находится ли редактор в режиме предпросмотра.
	'locale'                                 => 'en_US', // Локаль текущего пользователя (напр. "ru_RU").
	'maxWidth'                               => 610, // Максимальная ширина контейнера блоков (обычно задаётся темой).
	'onNavigateToEntityRecord'               => null, // JS-колбэк, вызываемый при переходе к другому ресурсу (посту, странице и т.п.).
	'postsPerPage'                           => 10, // Кол-во записей, отображаемых на страницу (например, в выпадающих списках).
	'readOnly'                               => false, // Редактор открыт только для чтения (например, в случае блокировки поста другим пользователем).
	'widgetTypesToHideFromLegacyWidgetBlock' => [], // Типы виджетов, которые нужно скрыть в блоке "старые виджеты".
];
$block_editor_context(WP_Block_Editor_Context)

Контекст текущего редактора (информация о записи, типе редактора и т.п.). См. WP_Block_Editor_Context.

Пример объекта:

WP_Block_Editor_Context Object (
	[name] => core/edit-site
	[post] =>
)

Примеры

-1

#1 Демо: пример изменения параметров редактора

add_filter( 'block_editor_settings_all', 'remove_block_editor_styles', 10, 2 );

/**
 * @param array                   $settings The block editor settings.
 * @param WP_Block_Editor_Context $context  The context of the block editor.
 */
function remove_block_editor_styles( $settings, $context ): array {
	// Редактор сайта на странице админки: Appearance > Editor - /wp-admin/site-editor.php
	if( $context->name === 'core/edit-site' ){
		$settings['styles'] = []; // Очищаем стили редактора сайта
		$settings['disableLayoutStyles'] = 1; // Отключаем стили макета редактора сайта
	}

	// Редактор блоков на странице редактирования поста: /wp-admin/post.php
	if( $context->name === 'core/edit-post' ){
		if( $context->post->post_type === 'my_custom_type' ){
			$settings['allowedBlockTypes'] = false; // Отключаем все блоки
		}
		$settings['canLockBlocks'] = false; // Отключаем возможность блокировки блоков
		$settings['disablePostFormats'] = false;
	}

	return $settings;
}

Список изменений

С версии 5.8.0 Введена.

Где вызывается хук

get_block_editor_settings()
block_editor_settings_all
wp-includes/block-editor.php 671
$editor_settings = apply_filters( 'block_editor_settings_all', $editor_settings, $block_editor_context );

Где используется хук в WordPress

wp-includes/block-supports/duotone.php 57
add_filter( 'block_editor_settings_all', array( 'WP_Duotone', 'add_editor_settings' ), 10 );