unregister_post_type

Отменяет регистрацию указанного типа записи. Удаляет тип записи.

Не работает со встроенными типами записей: посты, страницы, вложения и т.д., т.е. с теми у которых указан параметр _builtin при регистрации с помощью register_post_type.

При удалении типа записи, удаляется все что с ней связано: параметры запроса, правила ЧПУ и т.д.

Хуки из функции:
unregistered_post_type
Возвращает

True/false/WP_Error. True, при успешной отмене. WP_Error, при неудачной отмене или когда указанного типа записи не существует.

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

unregister_post_type( $post_type );
$post_type(строка) (обязательный)
Название типа записи который нужно отменить.

Примеры

#1 Отмена зарегистрированного типа записи

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

// Так как типы записей регистрируются обычно во время события ``init``,
// то удалять их нужно позже этого события. Можно использовать событие 
// ``wp_loaded`` или тот же ``init`` но с меньшим приоритетом.

add_action('init', 'my_unregister_post_type', 999);
function my_unregister_post_type(){
	unregister_post_type('product');
}

Код из


wp-includes/post.php

WP 4.7.2

<?php
function unregister_post_type( $post_type ) {
	global $wp_post_types;

	if ( ! post_type_exists( $post_type ) ) {
		return new WP_Error( 'invalid_post_type', __( 'Invalid post type.' ) );
	}

	$post_type_object = get_post_type_object( $post_type );

	// Do not allow unregistering internal post types.
	if ( $post_type_object->_builtin ) {
		return new WP_Error( 'invalid_post_type', __( 'Unregistering a built-in post type is not allowed' ) );
	}

	$post_type_object->remove_supports();
	$post_type_object->remove_rewrite_rules();
	$post_type_object->unregister_meta_boxes();
	$post_type_object->remove_hooks();
	$post_type_object->unregister_taxonomies();

	unset( $wp_post_types[ $post_type ] );

	/**
	 * Fires after a post type was unregistered.
	 *
	 * @since 4.5.0
	 *
	 * @param string $post_type Post type key.
	 */
	do_action( 'unregistered_post_type', $post_type );

	return true;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *