Решение ошибки Invalid post type в WordPress

Ошибка Invalid post type в WordPress встречается достаточно часто, особенно при работе с пользовательскими типами записей (custom post types) или при использовании различных плагинов. В этой статье разберем причины возникновения ошибки, а также покажем, как правильно регистрировать и использовать пользовательские типы записей, чтобы избежать данной проблемы.

Что означает ошибка Invalid post type и когда она возникает

Ошибка Invalid post type появляется, когда WordPress пытается получить доступ или выполнить действия с типом записи, который не зарегистрирован в системе. Например, если вы пытаетесь вывести записи типа, который не существует, или вызвать методы API с неправильным именем типа записи.

Это может случаться в следующих случаях:

  • Опечатка в названии пользовательского типа записи.
  • Тип записи зарегистрирован некорректно или в неправильное время (например, слишком поздно в инициализации WordPress).
  • Плагин, который регистрирует тип записи, деактивирован или конфликтует с другими компонентами.
  • Запросы к REST API с некорректным параметром типа записи.

Как правильно регистрировать пользовательский тип записи, чтобы избежать ошибки

Для регистрации пользовательского типа записи используется функция register_post_type(). Важно вызывать эту функцию на хук init, чтобы тип записи зарегистрировался до любой работы с ним.

Пример правильной регистрации пользовательского типа записи book:

add_action('init', 'wperror_register_post_type_book');
function wperror_register_post_type_book() {
    $labels = array(
        'name' => 'Книги',
        'singular_name' => 'Книга',
        'add_new' => 'Добавить книгу',
        'add_new_item' => 'Добавить новую книгу',
        'edit_item' => 'Редактировать книгу',
        'new_item' => 'Новая книга',
        'view_item' => 'Просмотр книги',
        'search_items' => 'Поиск книг',
        'not_found' => 'Книги не найдены',
        'not_found_in_trash' => 'В корзине книги не найдены',
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'has_archive' => true,
        'rewrite' => array('slug' => 'books'),
        'supports' => array('title', 'editor', 'thumbnail'),
        'show_in_rest' => true,
    );

    register_post_type('book', $args);
}

Обратите внимание на параметр show_in_rest. Если вы планируете использовать REST API, он должен быть установлен в true, иначе тип записи не будет доступен через API, что также может приводить к ошибкам.

Проверка существования типа записи перед использованием

Если в вашем коде происходит выборка или работа с типом записи, всегда стоит проверить, зарегистрирован ли он в системе. Для этого существует функция post_type_exists().

if (post_type_exists('book')) {
    // Работаем с типом записи 'book'
} else {
    // Логируем ошибку или уведомляем, что тип записи не найден
}

Такой подход поможет избежать фатальных ошибок и позволит корректно обрабатывать ситуации, когда тип записи отсутствует.

Исправляем ошибку Invalid post type в REST API запросах

Ошибка часто возникает при запросах к REST API с указанием некорректного параметра type или post_type. Чтобы проверить доступные типы записей через REST API, можно воспользоваться эндпоинтом:

https://ваш-сайт.ru/wp-json/wp/v2/types

Если нужный тип записи не отображается, значит он не зарегистрирован с параметром show_in_rest => true.

Пример запроса с правильным типом записи:

fetch('https://ваш-сайт.ru/wp-json/wp/v2/book')
  .then(response => response.json())
  .then(data => console.log(data));

Плагины, которые помогают управлять пользовательскими типами записей и предотвращают ошибки

Если вы не хотите писать код вручную, можно использовать плагины для удобного создания и управления пользовательскими типами записей:

  • Custom Post Type UI — удобный интерфейс для регистрации типов записей и таксономий.
  • Clearfy Pro — оптимизационный плагин с возможностями управления типами записей и устранения ошибок.

Эти инструменты помогут избежать распространённых ошибок и упростят управление контентом.

Диагностика и отладка ошибки Invalid post type

Если ошибка возникает после установки плагина или темы, проверьте, не конфликтуют ли они с регистрацией типов записей. Для этого:

  • Деактивируйте все плагины, кроме нужных, и проверьте исчезновение ошибки.
  • Переключитесь на стандартную тему WordPress (например, Twenty Twenty-Three).
  • Включите режим отладки в wp-config.php (define('WP_DEBUG', true);) и посмотрите логи.

Если ошибка в REST API, используйте инструменты, например, Postman или браузер, чтобы проверить запросы и ответы сервера.

Пример функции для безопасного получения записей с проверкой типа записи

function wperror_get_posts_by_type($post_type, $args = array()) {
    if (!post_type_exists($post_type)) {
        error_log('Ошибка: тип записи ' . $post_type . ' не зарегистрирован');
        return array();
    }

    $default_args = array(
        'post_type' => $post_type,
        'posts_per_page' => 10,
        'post_status' => 'publish',
    );

    $query_args = array_merge($default_args, $args);
    $query = new WP_Query($query_args);

    return $query->posts;
}

Используя эту функцию, вы защитите код от сбоев из-за неправильного типа записи и сможете гибко получать записи.

Выводы и рекомендации

Ошибка Invalid post type связана с неправильной регистрацией или использованием типов записей в WordPress. Чтобы её избежать:

  • Всегда регистрируйте пользовательские типы на хук init.
  • Проверяйте существование типа записи перед использованием.
  • Убедитесь в правильных настройках параметров, особенно show_in_rest.
  • Используйте проверенные плагины для создания типов записей.
  • Тестируйте изменения в режиме отладки и минимальной конфигурации плагинов и тем.

Благодаря этим простым рекомендациям вы сможете избежать ошибки Invalid post type и обеспечить стабильную работу сайта на WordPress.

WooCommerce не работает: способ определения и решения проблемы
22.04.2026
WooCommerce: как исправить проблему с неработающим AJAX корзины
23.06.2026
Решение ошибки WP-Cron не работает при большом количестве задач в WordPress
25.03.2026
WooCommerce не работает отслеживание статусов заказов: причины и решение
26.04.2026
WooCommerce не работает с платёжными системами: диагностика и решение
03.05.2026