Как узнать, используется ли Gutenberg или классический редактор?

Допустим мы создаём какой-то крутой плагин, который будет работать с содержимым постов или с постами в целом в WordPress.

Вроде бы всё здорово, но кроме одной детали – мы никогда заранее не знаем, что используется на сайте у пользователей для редактирования контента! Это может быть и блочный редактор (Gutenberg), это может быть и классический редактор (включен плагин Classic Editor или же старая версия WordPress), а также это могут быть истории вроде Elementor, Divi и так далее.

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

В этом посту я покажу вам два способа, как это можно сделать!

Также хочу порекомендовать вам свой видеокурс по созданию блока Gutenberg.

1. Находясь на странице редактирования, используя get_current_screen()

Этот способ может быть полезен, когда вам нужно сделать что-либо непосредственно на странице редактирования поста, к примеру подключить какие-либо скрипты и стили в зависимости от того, используется Gutenberg или нет.

$current_screen = get_current_screen();
if( $current_screen->is_block_editor() ) {
	// да, используется
} else {
	// нет, не используется
}

Сразу пример с подключением скриптов функцией wp_enqueue_script():

add_action( 'admin_enqueue_scripts', 'true_scripts' );
 
function true_scripts() {
	$current_screen = get_current_screen();
	if( ! $current_screen->is_block_editor() ) {
		wp_enqueue_script( ....
	}
}

То есть в примере выше подключаем только для классического редактора.

2. По содержимому поста функцией has_blocks()

Функция has_blocks() прекрасно подойдёт, если вы работаете с контентом постов где-то за пределами админки и вам нужно проверить, содержатся ли там блоки Gutenberg.

if( has_blocks() ) {
	// проверяем, используется ли Gutenberg у текущего поста в цикле
}
if( has_blocks( $post_content ) ) {
	// проверяем, есть ли блоки Gutenberg внутри $post_content
}

3. Активирован ли плагин Classic Editor

Окей, этот способ явно не такой точный, но иногда и он может пригодиться. Не такой точный – потому что, если у вас не активирован плагин Classic Editor, это далеко не значит, что у вас используется Gutenberg, ведь вполне может использоваться какой-то левый конструктор типо Elementor.

include_once ABSPATH . 'wp-admin/includes/plugin.php';
 
if ( ! is_plugin_active( 'classic-editor/classic-editor.php' ) ) {
	// используется Gutenberg
}
 
// используется классический редактор, но это не точно
$option = get_option( 'classic-editor-replace' );
if( 'classic' === $option ) {
	// используется классический
}
if( 'block' === $option ) {
	// используется Gutenberg
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал