Как подружить Гутенберг с пользовательскими таксономиями Вордпресс

12 января 2019

После релиза пятой версии Вордпресс ко мне неоднократно обращались с вопросом, почему в новом редакторе не отображаются старые пользовательские таксономии. Разбираемся куда они подевались и как их вернуть.

Новые лендинги

Не переживайте — все таксономии целые и невредимые. Причина в том, что Гутенберг извлекает таксономии используя REST API. И скорее всего вы просто не включили его поддержку при регистрации таксономии.

Как исправить

Таксономии регистрируются чаще всего в functions.php темы. Открываем его, находим вызов register_taxonomy() и добавляем в него ‘show_in_rest’ => true. Это нужно сделать для всех таксономий.

Рабочий пример с одного из сайтов, где для записей регистрируется дополнительная таксономия «Бренды».

register_taxonomy( 'brands', 'post', array( 
'hierarchical' => true,
'label' => 'Бренды',
'query_var' => true,
'rewrite' => true,
'show_in_rest' => true,
// REST API
'rest_base' => 'brands'
));

На одном из сайтов проблема разрешилась не до конца: блок таксономии появился, но термины по-прежнему не отображались. Выяснилось, что один из плагинов модифицировал маршруты. Если вы столкнулись с похожей проблемой, регистрируйте таксономию с указанием rest_base и rest_controller_class.

  • rest_base — параметр, меняющий дефолтное название типа записи в URL. Например, если указать в rest_base = ‘brand’, то вместо wp-json/wp/v2/brands/ мы получим маршрут wp-json/wp/v2/brand.
  • rest_controller_class — подкласс WP_REST_Controller, по умолчанию используется WP_REST_Posts_Controller.

Таким образом, регистрация таксономии будет выглядеть так:

register_taxonomy( 'brands', 'post', array( 
   'hierarchical' => true, 
   'label' => 'Бренды', 
   'query_var' => true, 
   'rewrite' => true, 
   'show_in_rest' => true,
   // REST API
   'rest_base' => 'brands',
   'rest_controller_class' => 'WP_REST_Terms_Controller',
 ));

Теперь точно все будет работать.

Я получаю много негативных отзывов по Гутенбергу в комментариях и лично. Иногда складывается такое ощущение, как будто это все придумал я.

Гутенберг — это требование времени.

Да, он все еще сырой, но это не навсегда.
Да, он работает некорректно с некоторыми темами, и с этим придется что-то делать.
Да, он сильно отличается от классического редактора и к нему нужно привыкать.

Но в целом, Гутенберг — это огромный шаг вперед.
И я верю, что все будет хорошо!

Подпишитесь на мой телеграм и первыми получайте новые материалы, в том числе которых нет на сайте.

INNERSTAT

Подпишитесь на рассылку
Один раз в месяц все новые материалы в одном письме

Лучшее за неделю
Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе Вордпресс.

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

Премиум-темы для Вордпресс с русскоговорящей поддержкой
Подробнее