Почему 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).