UNREGISTER_POST_TYPE() — Удаление типа записи в WordPress
Функция unregister_post_type() удаляет определённый тип записи в WordPress. Это может быть полезно, если вы хотите убрать лишние типы постов, созданные плагинами или темами.
Важные моменты
-
Невозможно удалить встроенные типы: Вы не сможете удалить стандартные типы записей, такие как посты, страницы или вложения. Эти типы имеют параметр
_builtinпри регистрации с помощью функцииregister_post_type(). -
Удаление всего, что с ним связано: При удалении типа записи также удаляются все связанные с ним элементы: правила переименования, мета-боксы, хуки и таксономии.
-
Для удаления таксономии: Используйте функцию
unregister_taxonomy().
Хуки функции
Функция вызывает следующий хук:
unregistered_post_type
Возвращаемое значение
Функция возвращает:
trueпри успехеWP_Errorв случае ошибки или если указанный тип поста не существует.
Использование функции
unregister_post_type( $post_type );
Параметры
$post_type(string) (обязательный) — Тип записи, который нужно удалить.
Примеры
Пример 1: Удаление типа записи
Предположим, у вас есть плагин или тема, которые регистрируют тип записи "product", который вам не нужен.
// Все типы записей регистрируются во время действия "init",
// поэтому вы должны удалить их после этого.
// Используйте для этого действие "wp_loaded" или "init" с более низким приоритетом.
add_action('init', 'my_unregister_post_type', 999);
function my_unregister_post_type(){
unregister_post_type('product');
}
Заметки
- Глобальный массив:
$wp_post_types— это список всех типов записей.
Изменения
- С версии 4.5.0: Функция была введена.
Код функции unregister_post_type
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 );
// Запрещаем удаление встроенных типов записей.
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 ] );
/**
* Срабатывает после удаления типа записи.
*
* @param string $post_type Ключ типа записи.
*/
do_action( 'unregistered_post_type', $post_type );
return true;
}
Связанные функции
add_post_type_support()get_post_type()get_post_type_object()get_post_types()is_post_type_hierarchical()is_post_type_viewable()post_type_exists()post_type_supports()register_post_type()remove_post_type_support()set_post_type()WP_Post_Type()
Эта информация поможет вам лучше управлять типами записей в WordPress и удалять ненужные элементы из вашей системы.