unregister_taxonomy() WP 4.5.0

Скасує реєстрацію зазначеної таксономії (видаляє таксономію).

Крім видалення таксономії із загального масиву таксономій також видаляються: правила перезапису ЧПУ, параметри запиту і пов’язані з таксономією фільтри.

Не працює з вбудованими таксономіями міток та рубрик: post_tag та category . Не працює з тими таксономіями, які мають властивість _builtin = true .

1 раз – 0.000039 сек
(дуже швидко) | 50000 разів – 0.89 сек
(дуже швидко) |
PHP 7.0.5, WP 4.5

Хуки з функції

Повертає

true|WP_Error. True при видаленні. WP_Error при помилці або коли таксономії не існує.

Використання

unregister_taxonomy( $taxonomy );
$taxonomy
(рядок) (обов’язковий)
Назва таксономії, яку потрібно видалити (скасувати).

Приклади

0

#1 Видалимо таксономію

Допустимо під час події initми зареєстрували таксономію genre. І потім згодом нам потрібно її скасувати.

// реєстрація таксономії
add_action( 'init', 'create_genre_taxonomy');
function create_genre_taxonomy(){
  // Додаємо деревоподібну таксономію 'genre' (як категорії)
  register_taxonomy('genre', array('book'), array(
	'hierarchical' => true,
	'labels' => $labels,
	'show_ui' => true,
	'query_var' => true,
	'rewrite' => array( 'slug' => 'genre' ),
  ));
}

// Видалення таксономії
add_action( 'wp', 'unregister_genre_taxonomy' );
function unregister_genre_taxonomy(){
	// скасовуємо таксу лише з окремих сторінках
	if( ! is_singular() ) return;

	unregister_taxonomy('genre');
}

нотатки

  • Global. WP. $wp Current WordPress environment instance.
  • Global. WP_Taxonomy[]. $wp_taxonomies List of taxonomies.

список змін

З версії 4.5.0Введено.

Код unregister_taxonomy() WP 6.0.2

function unregister_taxonomy( $taxonomy ) {
	if ( ! taxonomy_exists( $taxonomy ) ) {
		return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) );
	}

	$taxonomy_object = get_taxonomy( $taxonomy );

	// Do not allow unregistering внутрішні taxonomies.
	if ( $taxonomy_object->_builtin ) {
		return new WP_Error( 'invalid_taxonomy', __( 'Unregistering a built-in taxonomy is not allowed.' ) );
	}

	Global $wp_taxonomies;

	$taxonomy_object->remove_rewrite_rules();
	$taxonomy_object->remove_hooks();

	// Remove custom taxonomy default term option.
	if ( ! empty( $taxonomy_object->default_term ) ) {
		delete_option( 'default_term_' . $taxonomy_object->name );
	}

	// Remove the taxonomy.
	unset( $wp_taxonomies[ $taxonomy ] );

	/**
	 * Fires після taxonomy is unregistered.
	 *
	 * @ Since 4.5.0
	 *
	 * @param string $taxonomy Taxonomy name.
	 */
	do_action( 'unregistered_taxonomy', $taxonomy );

	return true;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *