В данной статье мы рассмотрим разные методы включения и отключения Gutenberg для различных областей сайта. В WordPress 5.0 и более поздних версиях системы Gutenberg включен по умолчанию. Поэтому, если вам вдруг понадобится включить его везде, вам ничего не нужно делать: он и так будет работать.
Иными словами, если вы хотите включить Gutenberg только для определенных ID записей, типов записей и т.д., то вам нужно будет сначала везде его отключить. Для этого мы можем использовать один из следующих фильтров (что зависит от версии WP):
02 | add_filter( 'gutenberg_can_edit_post' , '__return_false' , 5); |
05 | 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 записей:
01 | function shapeSpace_enable_gutenberg_post_ids( $can_edit , $post ) { |
03 | if ( empty ( $post ->ID)) return $can_edit ; |
05 | if (1 === $post ->ID) return true; |
07 | return $can_edit ; |
12 | add_filter( 'gutenberg_can_edit_post' , 'shapeSpace_enable_gutenberg_post_ids' , 10, 2); |
15 | add_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