WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

unregister_post_type() WP 4.5.0

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

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

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

Чтобы отменить регистрацию таксономии, используйте unregister_taxonomy().

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

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');
}

Заметки

  • Global. Массив. $wp_post_types List of post types.

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

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

Код unregister_post_type() WP 5.5.1

wp-includes/post.php
<?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;
}

Cвязанные функции

Из метки: post_type (произвольный тип записи)

Еще из раздела: Типы записей

8 комментов