unregister_taxonomy_for_object_type()WP 3.7.0

Открепляет таксономию от указанного типа записи (или другого объекта).

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

Таксономия должна быть зарегистрирована на момент срабатывания этой функции. Таксономии часто регистрируются на хуке init, а функция может вызываться раньше. По этой причине она может не срабатывать. Имейте это ввиду!

Эта функция лишь разрывается связь между таксономией и типом записи. Физически таксономия не удаляется. Чтобы удалить таксономию (отменить регистрацию), используйте unregister_taxonomy().

1 раз — 0.000001 сек (скорость света) | 50000 раз — 0.02 сек (скорость света) | PHP 7.0.32, WP 5.1
Хуки из функции

Возвращает

true|false. True, если удалось отвязать таксономию.

Использование

unregister_taxonomy_for_object_type( $taxonomy, $object_type );
$taxonomy(строка) (обязательный)
Имя таксономии, указываемое в register_taxonomy() первым аргументом.
$object_type(строка) (обязательный)
Имя типа записи, указываемое в register_post_type() первым параметром.

Примеры

0

#1 Отвяжем "Метки" от "Записей"

Этот пример отвяжет "Метки" от "Записей", то есть в меню "Записи" пропадёт пункт "Метки", а при редактировании записи пропадёт метабокс "Метки". Физического удаления таксономии "Метки" не произойдёт.

add_action( 'init', 'prefix_unregister_tags', 99 );
function prefix_unregister_tags(){
	unregister_taxonomy_for_object_type( 'post_tag', 'post' );

	// Тоже самое можно сделать и с "Рубриками"
	// unregister_taxonomy_for_object_type( 'category', 'post' );
}

Заметки

  • Global. WP_Taxonomy[]. $wp_taxonomies The registered taxonomies.

Список изменений

С версии 3.7.0 Введена.

Код unregister_taxonomy_for_object_type() WP 6.4.3

function unregister_taxonomy_for_object_type( $taxonomy, $object_type ) {
	global $wp_taxonomies;

	if ( ! isset( $wp_taxonomies[ $taxonomy ] ) ) {
		return false;
	}

	if ( ! get_post_type_object( $object_type ) ) {
		return false;
	}

	$key = array_search( $object_type, $wp_taxonomies[ $taxonomy ]->object_type, true );
	if ( false === $key ) {
		return false;
	}

	unset( $wp_taxonomies[ $taxonomy ]->object_type[ $key ] );

	/**
	 * Fires after a taxonomy is unregistered for an object type.
	 *
	 * @since 5.1.0
	 *
	 * @param string $taxonomy    Taxonomy name.
	 * @param string $object_type Name of the object type.
	 */
	do_action( 'unregistered_taxonomy_for_object_type', $taxonomy, $object_type );

	return true;
}