В WordPress типы постов — это фундаментальная часть архитектуры, которая позволяет организовывать контент по категориям: записи, страницы, товары и другие кастомные типы. Иногда возникает задача отключить или ограничить использование определённых типов постов, например, чтобы убрать ненужный функционал или упростить интерфейс для пользователей.
Что значит отключить типы постов в WordPress и зачем это нужно
Под "отключением" типа поста обычно понимают следующие варианты:
- Скрыть тип поста из административной панели и меню;
- Запретить создание новых записей данного типа;
- Отключить отображение типа поста на фронтенде;
- Удалить или деактивировать кастомный тип поста, добавленный плагином или темой.
Причины для таких действий могут быть разными: упрощение интерфейса, оптимизация сайта, устранение конфликтов между плагинами, повышение безопасности или сокращение нагрузки.
Как скрыть стандартные типы постов (например, «Страницы» или «Записи») из админки
Хотя WordPress не предлагает штатных настроек для полного удаления стандартных типов, есть способ скрыть их меню и доступ. Для этого можно использовать хук admin_menu и функцию remove_menu_page(). Например, чтобы скрыть меню «Страницы»:
add_action('admin_menu', 'wpdigest_remove_pages_menu');
function wpdigest_remove_pages_menu() {
remove_menu_page('edit.php?post_type=page');
}
Это уберёт пункт меню, но записи и страницы останутся доступны через прямые ссылки и API.
Чтобы полностью запретить доступ, можно дополнительно закрыть запросы к этим типам, используя фильтр parse_query или проверку в хуках pre_get_posts.
Пример: запрет доступа к страницам для определённой роли
add_action('pre_get_posts', 'wpdigest_block_pages_for_subscribers');
function wpdigest_block_pages_for_subscribers($query) {
if (is_admin() && $query->is_main_query() && !current_user_can('edit_others_pages')) {
$query->set('post_type', 'post');
}
}
Так пользователи без права редактировать страницы не увидят их в админке.
Отключение и удаление кастомных типов постов
Кастомные типы постов чаще всего регистрируются с помощью функции register_post_type() в плагинах или теме. Чтобы полностью отключить такой тип, нужно либо отключить плагин, его создающий, либо удалить регистрацию типа.
Если отключить плагин нельзя, можно попробовать «перерегистрировать» тип с параметром public => false и show_ui => false в функции init с более высоким приоритетом.
add_action('init', 'wpdigest_disable_custom_post_type', 20);
function wpdigest_disable_custom_post_type() {
if (post_type_exists('my_custom_type')) {
unregister_post_type('my_custom_type'); // К сожалению, стандартной функции нет, но можно "перерегистрировать"
register_post_type('my_custom_type', [
'public' => false,
'show_ui' => false,
]);
}
}
Если нужно более надежное решение — лучше использовать плагин Clearfy Pro, который позволяет управлять типами постов и отключать ненужные в пару кликов без кода.
Скрытие типов постов с помощью плагинов
Если вы не хотите вникать в код, хорошим решением станет плагин Adminimize или WP Admin UI Customize. Они позволяют скрывать меню и элементы интерфейса без программирования.
Также полезен плагин My Popup, который можно настроить для уведомлений пользователей при попытке перейти к отключённым типам.
Преимущества плагиновых решений:
- Не требуют навыков программирования;
- Легко включить/отключить;
- Безопасны для обновлений WordPress;
- Визуальный интерфейс управления.
Как безопасно удалить записи отключаемого типа постов
Перед отключением типа поста важно решить, что делать с уже существующим контентом. Если записи не нужны — их можно удалить через WP-CLI или код:
$posts = get_posts(['post_type' => 'my_custom_type', 'numberposts' => -1]);
foreach ($posts as $post) {
wp_delete_post($post->ID, true);
}
Если контент нужен — продумайте миграцию данных в другой тип или архивирование.
Итоги и рекомендации
Отключение типов постов в WordPress — задача, требующая аккуратности, чтобы не потерять данные и не сломать функционал сайта. Самый безопасный способ — использовать проверенные плагины, такие как Clearfy Pro, или тщательно писать кастомный код с проверками.
Используйте хук admin_menu для скрытия меню, а pre_get_posts — для ограничения видимости записей в админке. Для кастомных типов — либо отключайте плагин, либо перерегистрируйте тип с параметрами public и show_ui в false.
Таким образом вы сможете гибко управлять типами постов и обеспечить удобство работы с сайтом.