Функция 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. Вы можете использовать её для удаления ненужных типов записей, которые были зарегистрированы темами или плагинами, но не встроенных типов, таких как посты или страницы.