Можно ли получить интерфейс Gutenberg на пользовательском типе записей без поддержки блокового редактора?

Вопрос или проблема

Я зарегистрировал тип записи (назовем его “Книга”). Для этого типа записи, следуя документации разработчика, я установил следующие параметры:

'show_in_rest'  => true,
'supports'      => array('title','editor')

Все работает отлично: у меня есть весь интерфейс Gutenberg. Но когда я удаляю editor из… :

'supports' => array('title','editor')

…я возвращаюсь к старому классическому интерфейсу редактора. Можно ли этого избежать? Я знаю, что такое поведение полностью намерено командой WordPress, но оно не соответствует моим потребностям.

Поскольку мне нужна последовательность UX между интерфейсом записей и интерфейсом книг, я хотел бы получить современный интерфейс (см. первый скриншот вверху по сравнению с классическим интерфейсом внизу) без редактора Gutenberg, который я не буду использовать для этого типа записи.

современный интерфейс Gutenbergклассический интерфейс редактора

Есть ли способ обойти это?

Ответ или решение

Введение

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

Фундаментальная проблема

Как было указано в вашем примере, удаление поддержки editor из массива supports приводит к переключению интерфейса обратно на классический редактор. Это поведение соответствует стандартной логике работы WordPress, так как Gutenberg считается блоковым редактором, и его отсутствие загружает классическое оформление.

Решение: Переходное Состояние

Несмотря на то, что WordPress не поддерживает официально такую конфигурацию, есть несколько приемов, которые помогут вам достичь необходимого результата:

  1. Использование фильтров и хаков:

    • При помощи WordPress фильтра use_block_editor_for_post_type можно обманным путем заставить систему использовать толстую оболочку интерфейса Гутенберга без активации самого блокового редактора.
      add_filter('use_block_editor_for_post_type', function($can_edit, $post_type) {
      if ($post_type === 'book') {
         return true; 
      }
      return $can_edit;
      }, 10, 2);
  2. Кастомизация редактора:

    • Возможно, вам стоит создать свой собственный плагин или заменить функциональные элементы интерфейса стандартными скриптами JavaScript, которые предлогаются Gutenberg. Это даст вам возможность контролировать отображение элементов интерфейса.
  3. Переход на кастомное API:

    • Введение REST API для вашего типа записи (что вы уже сделали, если show_in_rest установлено в true) позволяет использовать современные JavaScript библиотеки для загрузки и отображения данных, сохраняя генерируемый интерфейс без активации редактора по умолчанию.

Заключение

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

Таким образом, ваш запрос имеет решение, хотя и требует внимательного и методического подхода в реализации. Удачи в разработке!

Оцените материал
Добавить комментарий

Капча загружается...