Вопрос или проблема
Я зарегистрировал тип записи (назовем его “Книга”). Для этого типа записи, следуя документации разработчика, я установил следующие параметры:
'show_in_rest' => true,
'supports' => array('title','editor')
Все работает отлично: у меня есть весь интерфейс Gutenberg. Но когда я удаляю editor из… :
'supports' => array('title','editor')
…я возвращаюсь к старому классическому интерфейсу редактора. Можно ли этого избежать? Я знаю, что такое поведение полностью намерено командой WordPress, но оно не соответствует моим потребностям.
Поскольку мне нужна последовательность UX между интерфейсом записей и интерфейсом книг, я хотел бы получить современный интерфейс (см. первый скриншот вверху по сравнению с классическим интерфейсом внизу) без редактора Gutenberg, который я не буду использовать для этого типа записи.
Есть ли способ обойти это?
Ответ или решение
Введение
Вопрос о том, как сохранить интерфейс Gutenberg для пользовательского типа записи, одновременно отключая поддержку блокового редактора, довольно актуален для многих пользователей WordPress. Многие сталкиваются с необходимостью создания пользовательских интерфейсов с удобной навигацией, сохраняя при этом общий стиль и пользовательский опыт (UX) платформы.
Фундаментальная проблема
Как было указано в вашем примере, удаление поддержки editor
из массива supports
приводит к переключению интерфейса обратно на классический редактор. Это поведение соответствует стандартной логике работы WordPress, так как Gutenberg считается блоковым редактором, и его отсутствие загружает классическое оформление.
Решение: Переходное Состояние
Несмотря на то, что WordPress не поддерживает официально такую конфигурацию, есть несколько приемов, которые помогут вам достичь необходимого результата:
-
Использование фильтров и хаков:
- При помощи 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);
- При помощи WordPress фильтра
-
Кастомизация редактора:
- Возможно, вам стоит создать свой собственный плагин или заменить функциональные элементы интерфейса стандартными скриптами JavaScript, которые предлогаются Gutenberg. Это даст вам возможность контролировать отображение элементов интерфейса.
-
Переход на кастомное API:
- Введение REST API для вашего типа записи (что вы уже сделали, если
show_in_rest
установлено вtrue
) позволяет использовать современные JavaScript библиотеки для загрузки и отображения данных, сохраняя генерируемый интерфейс без активации редактора по умолчанию.
- Введение REST API для вашего типа записи (что вы уже сделали, если
Заключение
Ваше желание сохранить консистентность UX между различными типами записей в WordPress понятно, и внедрение вышеуказанных методов позволит вам использовать интерфейс Gutenberg без необходимости активизации самих блоков. Однако, стоит учитывать, что такие подходы носят полуофициальный характер и могут нести потенциальные риски касательно совместимости и обновлений. Всегда рекомендуется тщательно тестировать решения перед внедрением на живом сайте.
Таким образом, ваш запрос имеет решение, хотя и требует внимательного и методического подхода в реализации. Удачи в разработке!