Удаление типа записи в WordPress: unregister_post_type()

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 и удалять ненужные элементы из вашей системы.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *