Функция 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. Она позволяет гибко настраивать, какие таксономии будут доступны для различных типов записей, не удаляя их из системы. Используйте её с осторожностью, чтобы избежать путаницы в вашем проекте.