В данной статье мы рассмотрим разные методы включения и отключения Gutenberg для различных областей сайта. В WordPress 5.0 и более поздних версиях системы Gutenberg включен по умолчанию. Поэтому, если вам вдруг понадобится включить его везде, вам ничего не нужно делать: он и так будет работать.
Иными словами, если вы хотите включить Gutenberg только для определенных ID записей, типов записей и т.д., то вам нужно будет сначала везде его отключить. Для этого мы можем использовать один из следующих фильтров (что зависит от версии WP):
// WP < 5.0 beta add_filter('gutenberg_can_edit_post', '__return_false', 5); // WP >= 5.0 add_filter('use_block_editor_for_post', '__return_false', 5);
Воспользуйтесь одним из этих хуков (или сразу двумя, чтобы охватить все версии WP) – добавьте код в файл functions.php темы. Если же вы хотите отключить Gutenberg и установить Classic Editor, то в таком случае обратите внимание на Disable Gutenberg – этот плагин является легковесным, гибким и простым в настройке. Он дает возможность отключить Gutenberg для разных участков сайта.
Примечание: обратили внимание на параметр (5) в фильтрах выше? Это значение позволяет нам переписывать и включать Gutenberg с помощью техник, представленных ниже.
Включаем Gutenberg только для определенных ID записей
Как только Gutenberg будет отключен везде, вы сможете включить его, к примеру, только для определенных ID записей:
function shapeSpace_enable_gutenberg_post_ids($can_edit, $post) { if (empty($post->ID)) return $can_edit; if (1 === $post->ID) return true; return $can_edit; } // Enable Gutenberg for WP < 5.0 beta add_filter('gutenberg_can_edit_post', 'shapeSpace_enable_gutenberg_post_ids', 10, 2); // Enable Gutenberg for WordPress >= 5.0 add_filter('use_block_editor_for_post', 'shapeSpace_enable_gutenberg_post_ids', 10, 2);
В данном коде функция включает Gutenberg только для поста с ID = 1. Вы можете менять ID при необходимости в третьей строке функции.
Включаем Gutenberg для новых записей
Чтобы включить Gutenberg только для новых записей, вы можете сделать следующее:
function shapeSpace_enable_gutenberg_new_posts($can_edit, $post) { if (empty($post->ID)) return $can_edit; $current = get_current_screen(); if ('post' === $current->base && 'add' === $current->action) return true; return $can_edit; } // Enable Gutenberg for WP < 5.0 beta add_filter('gutenberg_can_edit_post', 'shapeSpace_enable_gutenberg_new_posts', 10, 2); // Enable Gutenberg for WordPress >= 5.0 add_filter('use_block_editor_for_post', 'shapeSpace_enable_gutenberg_new_posts', 10, 2);
Функция проверяет, просматривает ли пользователь экран post-new.php, и если да, то в таком случае возвращает true (чтобы включить Gutenberg).
Примечание: обратите внимание на значение 10, которое передается через хуки add_filter. Зачем? Помните, мы устанавливали значение 5, когда отключали Gutenberg? Задав 10, мы переопределим функцию отключения, а потому Gutenberg будет включен. Это значение задает приоритет хука.
Включаем Gutenberg для определенных метаданных записей
Можно включить Gutenberg только для постов, у которых имеются некоторые определенные метаданные. Сделать это просто:
function shapeSpace_enable_gutenberg_post_meta($can_edit, $post) { if (empty($post->ID)) return $can_edit; if ('Happy' === get_post_meta($post->ID, 'current_mood', true)) return true; return $can_edit; } // Enable Gutenberg for WP < 5.0 beta add_filter('gutenberg_can_edit_post', 'shapeSpace_enable_gutenberg_post_meta', 10, 2); // Enable Gutenberg for WordPress >= 5.0 add_filter('use_block_editor_for_post', 'shapeSpace_enable_gutenberg_post_meta', 10, 2);
Функция проверяет текущий пост на наличие произвольного поля current_mood со значением Happy. Если оно существует, то в таком случае функция возвращает true для включения Gutenberg для данной записи. Обратите внимание, что эти примеры являются максимально простыми для понимания.
Совет: мы подцепляем функцию к двум фильтрам: gutenberg_can_edit_post и use_block_editor_for_post. Это означает, что функция будет выполняться во всех версиях WordPress. Если вам не важна поддержка старых версий, то тогда вы можете просто удалить одну из функций add_filter.
Включаем Gutenberg для определенных рубрик
Вот пример, показывающий, как включить Gutenberg только для определенных рубрик:
function shapeSpace_enable_gutenberg_post_cats($can_edit, $post) { if (empty($post->ID)) return $can_edit; if (has_category(12)) return true; return $can_edit; } // Enable Gutenberg for WP < 5.0 beta add_filter('gutenberg_can_edit_post', 'shapeSpace_enable_gutenberg_post_cats', 10, 2); // Enable Gutenberg for WordPress >= 5.0 add_filter('use_block_editor_for_post', 'shapeSpace_enable_gutenberg_post_cats', 10, 2);
Функция использует has_category() для проверки, принадлежит ли пост к рубрике 12. Если да, то в таком случае возвращается true, а значит, выводится Gutenberg. Естественно, вы можете указать свою рубрику или массив рубрик.
Совет: чтобы проверить, содержит ли текущий пост какие-либо блоки Gutenberg, мы можем добавить условие к любой из наших функций: if (has_blocks($post)) return true;.
Включаем Gutenberg для определенных меток
Пример, как включить Gutenberg для определенных меток:
function shapeSpace_enable_gutenberg_post_tags($can_edit, $post) { if (empty($post->ID)) return $can_edit; if (has_tag(50)) return true; return $can_edit; } // Enable Gutenberg for WP < 5.0 beta add_filter('gutenberg_can_edit_post', 'shapeSpace_enable_gutenberg_post_tags', 10, 2); // Enable Gutenberg for WordPress >= 5.0 add_filter('use_block_editor_for_post', 'shapeSpace_enable_gutenberg_post_tags', 10, 2);
Функция проверяет с помощью has_tag(), содержит ли текущий пост метку с ID = 50. Если да, то в таком случае выводится Gutenberg. Вы можете задавать свои теги или массив тегов.
Совет: обратите внимание, что третий параметр, 2, передается в одну из функций add_filter(). Он определяет количество параметров, передаваемых в подцепленную функцию – в данном случае это shapeSpace_enable_gutenberg_post_tags. Если вы посмотрите на эту функцию, то вы увидите, что она принимает 2 параметра – $can_edit и $post.
Включаем Gutenberg для определенного типа записей
Пример, как включить Gutenberg только для определенных типов записей:
function shapeSpace_enable_gutenberg_post_type($can_edit, $post) { if (empty($post->ID)) return $can_edit; if ('books' === $post_type) return true; return $can_edit; } // Enable Gutenberg for WP < 5.0 beta add_filter('gutenberg_can_edit_post_type', 'shapeSpace_enable_gutenberg_post_type', 10, 2); // Enable Gutenberg for WordPress >= 5.0 add_filter('use_block_editor_for_post_type', 'shapeSpace_enable_gutenberg_post_type', 10, 2);
Функция похожа на остальные, но в ней имеются некоторые отличия. Для работы с типами записей WordPress/Gutenberg предлагает следующие фильтры:
// WP < 5.0 beta gutenberg_can_edit_post_type // WP >= 5.0 use_block_editor_for_post_type
Мы используем эти рекомендованные хуки, чтобы включить Gutenberg для определенных типов записей. Также обратите внимание, что наша функция проверяет текущий тип записей. Она проверяет, есть ли тип записей с названием books. Вы можете изменить его на любой другой при необходимости.
Возможности безграничны!
Источник: https://digwp.com