pre_set_site_transient_update_plugins не вызывается на хостинговом веб-пространстве

Вопрос или проблема

Я пытаюсь использовать pre_set_site_transient_update_plugins для обновления моего плагина из репозитория GitHub.

Для этого я использую этот пример. На моей дев-системе (MAMP для Mac версия 2.2) все в порядке. Он получает последнюю версию и показывает мне уведомление об обновлении.

Когда я опубликовал его на своей рабочей системе, которая является хостинговым пакетом, я не получаю уведомление об обновлении. Даже после ожидания 12 часов или использования ?force-check=1.

Что я уже сделал, так это создал простой плагин, который записывает строку в лог WordPress, когда вызывается pre_set_site_transient_update_plugins. Снова на моей дев-системе это работает, но не на живой системе. Поэтому я думаю, что это связано с конфигурацией PHP.

Кто-нибудь знает, какая настройка может препятствовать выполнению этого фильтра?

Извините за мой поздний ответ, но я нашел решение своей проблемы.

Мой код был в порядке, так же как и мой маленький тестовый плагин. Проблема была в кэшировании моего хостинг-провайдера. Они кэшируют запросы к базе данных, и обновителю потребовалось время, чтобы распознать, что плагин обновлен.

Вы используете старую библиотеку, и, похоже, она зависит от транзиентов для проверки и/или обновления ваших плагинов. Это не должно быть так, потому что транзиенты предназначены для хранения/кэширования временных данных.

Я рекомендую использовать более надежную и зрелую библиотеку, которую мы используем в нашей компании: Plugin Update Checker, смотрите https://github.com/YahnisElsts/plugin-update-checker.

У нее также есть опция принудительной проверки наличия обновлений. Эта библиотека действительно гибкая, вы можете использовать ее для .org, GitHub, BitBucket, GitLab и вашего собственного сервера.

Ответ или решение

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

  1. Кэширование на стороне хостинга: Как вы уже упомянули, кэширование может быть причиной того, что обновления не отображаются на вашем живом сайте. Многие хостинг-провайдеры используют кэширование для оптимизации производительности. Это может касаться как кэширования базы данных, так и кэширования объектов. Обратитесь к своему хостинг-провайдеру, чтобы узнать, как вы можете очистить кэш или отключить его на какое-то время, чтобы проверить, будет ли это иметь значение для обновления плагинов.

  2. Настройки PHP: Убедитесь, что на вашем хостинге установлены правильные настройки PHP, такие как разрешение на использование transients и правильные версии PHP и WordPress. Проверьте, включены ли cURL и allow_url_fopen, так как они могут использоваться для запроса данных с GitHub.

  3. Использование надёжной библиотеки: Рассмотрите возможность использования более стабильной и поддерживаемой библиотеки, такой как Plugin Update Checker (https://github.com/YahnisElsts/plugin-update-checker). Эта библиотека предоставляет более гибкие методы для обработки обновлений плагинов и может улучшить ваши шансы на успешное получение уведомлений об обновлениях. Она также обладает функцией принудительной проверки обновлений, что может быть полезно в вашей ситуации.

  4. Проверка логов: Проверьте логи сервера и WordPress (если они включены), чтобы увидеть, есть ли какие-либо ошибки или предупреждения, которые могут указать на причину проблемы. Это может дать дополнительную информацию о том, почему pre_set_site_transient_update_plugins не вызывается.

  5. Форсирование проверки обновлений: Как вы уже пробовали, использование параметра ?force-check=1 – это один из способов попытаться принудить WordPress проверить наличие обновлений. Если это не сработало, это может подтвердить, что проблема связана с кэшированием.

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

Оцените материал
Добавить комментарий

Капча загружается...