Функция unregister_taxonomy_for_object_type()
позволяет удалить уже зарегистрированную таксономию из типа объекта (например, записи или страницы). Это полезно, когда вы хотите отключить таксономию для определенного типа записи, не удаляя саму таксономию.
unregister_taxonomy_for_object_type( string $taxonomy, string $object_type ): bool
Параметры
- $taxonomy (строка, обязательный): Название таксономии, которую вы хотите отвязать.
- $object_type (строка, обязательный): Название типа объекта, от которого вы хотите отвязать таксономию.
Возвращаемое значение
- bool: Возвращает
true
, если операция прошла успешно, иfalse
, если нет.
Как работает функция
Функция удаляет связь между таксономией и типом записи после того, как тип записи уже был зарегистрирован. Таксономия должна быть зарегистрирована на момент вызова этой функции. Обычно таксономии регистрируются на хуке init
, поэтому важно вызывать эту функцию также на этом хуке, но после регистрации.
Функция не удаляет саму таксономию; она лишь разрывает связь между таксономией и указанным типом записи. Если вы хотите полностью удалить таксономию, используйте функцию unregister_taxonomy()
.
Хуки
unregistered_taxonomy_for_object_type
: Хук, вызываемый после отвязывания таксономии от типа объекта.
Пример 1: Удаление меток из записей
В этом примере мы отвяжем метки от записей. В результате пункт «Метки» исчезнет из меню записей, а также метабокс «Метки» будет удален при редактировании отдельной записи.
add_action( 'init', 'wpdocs_unregister_tags_for_posts', 99 );
function wpdocs_unregister_tags_for_posts() {
unregister_taxonomy_for_object_type( 'post_tag', 'post' );
}
Пример 2: Удаление категорий из записей
Аналогично, мы можем отключить категории от записей, используя ту же функцию:
add_action( 'init', 'wpdocs_unregister_categories_for_posts', 99 );
function wpdocs_unregister_categories_for_posts() {
unregister_taxonomy_for_object_type( 'category', 'post' );
}
Примечание о возможных ошибках
Если вы получаете ошибку, например, «undefined offset: 2», это может быть связано с тем, что вы вызываете функцию раньше, чем таксономия была зарегистрирована. Убедитесь, что функция вызывается на хуке init
, и порядок выполнения корректный.
Заключение
Функция unregister_taxonomy_for_object_type()
— мощный инструмент для управления таксономиями в WordPress. Она позволяет гибко настраивать, какие таксономии будут доступны для различных типов записей, не удаляя их из системы. Используйте её с осторожностью, чтобы избежать путаницы в вашем проекте.