Как включить Gutenberg только для определенных областей сайта в WordPress

Click here to view original web page at oddstyle.ru

В данной статье мы рассмотрим разные методы включения и отключения Gutenberg для различных областей сайта. В WordPress 5.0 и более поздних версиях системы Gutenberg включен по умолчанию. Поэтому, если вам вдруг понадобится включить его везде, вам ничего не нужно делать: он и так будет работать.

Иными словами, если вы хотите включить Gutenberg только для определенных ID записей, типов записей и т.д., то вам нужно будет сначала везде его отключить. Для этого мы можем использовать один из следующих фильтров (что зависит от версии WP):

02add_filter('gutenberg_can_edit_post', '__return_false', 5);
05add_filter('use_block_editor_for_post', '__return_false', 5);

Воспользуйтесь одним из этих хуков (или сразу двумя, чтобы охватить все версии WP) – добавьте код в файл functions.php темы. Если же вы хотите отключить Gutenberg и установить Classic Editor, то в таком случае обратите внимание на Disable Gutenberg – этот плагин является легковесным, гибким и простым в настройке. Он дает возможность отключить Gutenberg для разных участков сайта.

Примечание: обратили внимание на параметр (5) в фильтрах выше? Это значение позволяет нам переписывать и включать Gutenberg с помощью техник, представленных ниже.

Включаем Gutenberg только для определенных ID записей

Как только Gutenberg будет отключен везде, вы сможете включить его, к примеру, только для определенных ID записей:

01function shapeSpace_enable_gutenberg_post_ids($can_edit, $post) {
03if (empty($post->ID)) return $can_edit;
05if (1 === $post->ID) return true;
07return $can_edit;
12add_filter('gutenberg_can_edit_post', 'shapeSpace_enable_gutenberg_post_ids', 10, 2);
15add_filter('use_block_editor_for_post', 'shapeSpace_enable_gutenberg_post_ids', 10, 2);

В данном коде функция включает Gutenberg только для поста с ID = 1. Вы можете менять ID при необходимости в третьей строке функции.

Включаем Gutenberg для новых записей

Чтобы включить Gutenberg только для новых записей, вы можете сделать следующее:

Функция проверяет, просматривает ли пользователь экран post-new.php, и если да, то в таком случае возвращает true (чтобы включить Gutenberg).

Примечание: обратите внимание на значение 10, которое передается через хуки add_filter. Зачем? Помните, мы устанавливали значение 5, когда отключали Gutenberg? Задав 10, мы переопределим функцию отключения, а потому Gutenberg будет включен. Это значение задает приоритет хука.

Включаем Gutenberg для определенных метаданных записей

Можно включить Gutenberg только для постов, у которых имеются некоторые определенные метаданные. Сделать это просто:

Функция проверяет текущий пост на наличие произвольного поля current_mood со значением Happy. Если оно существует, то в таком случае функция возвращает true для включения Gutenberg для данной записи. Обратите внимание, что эти примеры являются максимально простыми для понимания.

Совет: мы подцепляем функцию к двум фильтрам: gutenberg_can_edit_post и use_block_editor_for_post. Это означает, что функция будет выполняться во всех версиях WordPress. Если вам не важна поддержка старых версий, то тогда вы можете просто удалить одну из функций add_filter.

Включаем Gutenberg для определенных рубрик

Вот пример, показывающий, как включить Gutenberg только для определенных рубрик:

Функция использует has_category() для проверки, принадлежит ли пост к рубрике 12. Если да, то в таком случае возвращается true, а значит, выводится Gutenberg. Естественно, вы можете указать свою рубрику или массив рубрик.

Совет: чтобы проверить, содержит ли текущий пост какие-либо блоки Gutenberg, мы можем добавить условие к любой из наших функций: if (has_blocks($post)) return true;.

Включаем Gutenberg для определенных меток

Пример, как включить Gutenberg для определенных меток:

Функция проверяет с помощью has_tag(), содержит ли текущий пост метку с ID = 50. Если да, то в таком случае выводится Gutenberg. Вы можете задавать свои теги или массив тегов.

Совет: обратите внимание, что третий параметр, 2, передается в одну из функций add_filter(). Он определяет количество параметров, передаваемых в подцепленную функцию – в данном случае это shapeSpace_enable_gutenberg_post_tags. Если вы посмотрите на эту функцию, то вы увидите, что она принимает 2 параметра — $can_edit и $post.

Включаем Gutenberg для определенного типа записей

Пример, как включить Gutenberg только для определенных типов записей:

Функция похожа на остальные, но в ней имеются некоторые отличия. Для работы с типами записей WordPress/Gutenberg предлагает следующие фильтры:

Мы используем эти рекомендованные хуки, чтобы включить Gutenberg для определенных типов записей. Также обратите внимание, что наша функция проверяет текущий тип записей. Она проверяет, есть ли тип записей с названием books. Вы можете изменить его на любой другой при необходимости.

Возможности безграничны!

Источник: https://digwp.com