Функция unregister_post_type() используется для отмены регистрации произвольного типа записи (custom post type) в WordPress. Она удаляет все связанные с типом записи параметры, такие как правила ЧПУ и запросы, но не может быть применена к встроенным типам записей, таким как post, page или attachment.
unregister_post_type( string $post_type ): true|WP_Error
Функция используется для удаления произвольного типа записи, который был зарегистрирован ранее с помощью функции register_post_type(). Например, если тема или плагин добавил тип записи, который вам больше не нужен, вы можете его деактивировать.
Важно: Невозможно отменить регистрацию встроенных типов записей WordPress, таких как
postиpage. Функция предназначена исключительно для работы с произвольными (custom) типами записей.
Параметры
$post_type(обязательный, тип: string) — Название типа записи, который нужно удалить.
Возвращаемое значение
true— В случае успешного удаления.WP_Error— В случае ошибки или если указанный тип записи не существует.
Пример 1: Отмена произвольного типа записи product
Предположим, что плагин или тема зарегистрировали тип записи product, и вам нужно его удалить, так как он больше не используется. Это можно сделать следующим образом:
add_action( 'init', 'my_unregister_post_type', 999 );
function my_unregister_post_type() {
unregister_post_type( 'product' );
}
Здесь мы используем хук init, чтобы дождаться полной регистрации типов записей, и назначаем низкий приоритет (999), чтобы функция была вызвана после регистрации всех типов записей.
Пример 2: Удаление типа записи project
Если у вас есть кастомный тип записи project, и вы хотите его удалить, то используйте следующий код:
if ( ! function_exists( 'remove_project_post_type' ) ) {
function remove_project_post_type() {
unregister_post_type( 'project' );
}
}
add_action( 'init', 'remove_project_post_type', 10 );
Здесь функция remove_project_post_type удаляет тип записи project. Она сработает во время инициализации (хук init), но с приоритетом по умолчанию (10).
Пример 3: Удаление типа записи на сайте-сабдомене
Допустим, у вас есть многосайтовая сеть, и вы хотите отключить тип записи announcement только на сайтах-сабдоменах, а на главном сайте оставить его активным. Вот как это можно сделать:
function disable_announcement_cpt_for_subsite() {
if ( ! is_main_site() ) {
unregister_post_type( 'announcement' );
}
}
add_action( 'init', 'disable_announcement_cpt_for_subsite' );
Этот код проверяет, является ли текущий сайт главным. Если это не основной сайт, тип записи announcement удаляется.
Заключение
Функция unregister_post_type() позволяет гибко управлять зарегистрированными типами записей в WordPress. Вы можете использовать её для удаления ненужных типов записей, которые были зарегистрированы темами или плагинами, но не встроенных типов, таких как посты или страницы.