Допустим мы создаём какой-то крутой плагин, который будет работать с содержимым постов или с постами в целом в WordPress.
Вроде бы всё здорово, но кроме одной детали – мы никогда заранее не знаем, что используется на сайте у пользователей для редактирования контента! Это может быть и блочный редактор (Gutenberg), это может быть и классический редактор (включен плагин Classic Editor или же старая версия WordPress), а также это могут быть истории вроде Elementor, Divi и так далее.
Поэтому нам вероятно придётся периодически чекать, что это использует пользователь, чтобы создаваемый нами плагин одинаково хорошо работал для всех, ну или для почти всех.
В этом посту я покажу вам два способа, как это можно сделать!
Также хочу порекомендовать вам свой видеокурс по созданию блока Gutenberg.
Этот способ может быть полезен, когда вам нужно сделать что-либо непосредственно на странице редактирования поста, к примеру подключить какие-либо скрипты и стили в зависимости от того, используется 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( .... } }
То есть в примере выше подключаем только для классического редактора.
Функция has_blocks() прекрасно подойдёт, если вы работаете с контентом постов где-то за пределами админки и вам нужно проверить, содержатся ли там блоки Gutenberg.
if( has_blocks() ) { // проверяем, используется ли Gutenberg у текущего поста в цикле }
if( has_blocks( $post_content ) ) { // проверяем, есть ли блоки Gutenberg внутри $post_content }
Окей, этот способ явно не такой точный, но иногда и он может пригодиться. Не такой точный – потому что, если у вас не активирован плагин 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 }
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.