Почему Events Calendar показывает 404 после парсинга и как это исправить

    При использовании плагинов Events Calendar и WPGrabber для автоматического импорта мероприятий часто возникает ситуация: в общем списке события отображаются, статус «Опубликовано», но при переходе на отдельную страницу - ошибка 404. Проблема связана с тем, что парсер не формирует корректные постоянные ссылки (slug) для новых записей. Рассмотрим причины и способы решения.

    Причина ошибки 404 у импортированных событий

    Плагин WPGrabber создаёт записи типа tribe_events, но не обновляет структуру ЧПУ (человеко-понятных URL). В результате база данных WordPress не синхронизируется с правилами перезаписи URL. При ручном нажатии «Обновить» в админке перегенерируются slug и правила, после чего страница становится доступной. Автоматический вызов wp_update_post не решает проблему, так как требуется сброс правил перезаписи.

    Как исправить 404 для всех мероприятий сразу

    Сброс правил перезаписи (Permalinks)

    Самый простой способ - зайти в Настройки → Постоянные ссылки и нажать «Сохранить изменения», ничего не меняя. Это перестроит файл .htaccess и обновит маршруты. После этого все существующие мероприятия должны открываться без ошибки 404.

    Автоматический сброс через код

    Если вы не хотите делать это вручную после каждого импорта, добавьте в свой плагин или файл functions.php следующий код:

    function auto_flush_rewrite_after_import() {    flush_rewrite_rules();}add_action('wpgrabber_after_import', 'auto_flush_rewrite_after_import');

    Замените wpgrabber_after_import на конкретный хук, который срабатывает после завершения парсинга. Если такого хука нет, можно вызвать функцию после цикла импорта внутри вашего собственного обработчика.

    Альтернативные методы решения

    Обновление slug через SQL-запрос

    Иногда проблема возникает из-за пустого поля post_name. Выполните в phpMyAdmin или через WP CLI:

    UPDATE wp_posts SET post_name = CONCAT('event-', ID) WHERE post_type = 'tribe_events' AND post_name = '';

    После этого снова сбросьте правила перезаписи.

    Использование плагина «Regenerate Thumbnails»

    Хотя плагин предназначен для изображений, его функционал перестроения метаданных иногда помогает обновить ссылки. Установите и запустите для типа записей Мероприятия.

    Профилактика проблемы при будущем парсинге

    Чтобы не сталкиваться с 404 после каждого импорта, настройте WPGrabber так:

    • В поле «Постоянная ссылка» укажите шаблон, например [название] или event-[id].
    • Включите опцию «Обновлять существующие записи» - это заставит плагин перезаписывать slug.
    • После завершения импорта добавьте вызов flush_rewrite_rules().

    Если вы используете Events Calendar версии 6+, проверьте, что у вас включена опция «Удалять устаревшие правила перезаписи» в настройках плагина.

    Что делать, если ничего не помогло

    Попробуйте деактивировать все плагины, кроме Events Calendar и WPGrabber, и проверить страницу события. Если 404 исчезла - конфликтует другой плагин. Также убедитесь, что ваш сервер поддерживает mod_rewrite (для Apache) или настроен на обработку ЧПУ (для Nginx).

    Часто задаваемые вопросы