Плагин Wordpress - самостоятельное обновление - PullRequest
6 голосов
/ 16 августа 2011

Я разрабатываю плагин для Wordpress, который требует обновлений, хотя версия плагина проверяется с моего сервера.Я разработал несколько плагинов, которые используют один и тот же сервер для проверки новых версий.Проблема, с которой я сталкиваюсь, заключается в том, что, когда все плагины требуют обновления, и я нажимаю кнопку View Details, один из плагинов покажет подробности обновления (версия, описание и т. Д.), Но другие плагины не будут отображать какую-либо информацию.,После некоторой отладки я вижу, что сервер точно возвращает данные.

Мой вопрос: как я могу применить фильтр plugins_api несколько раз, чтобы он не конфликтовал с другими плагинами?

1 Ответ

10 голосов
/ 19 сентября 2011

Ваше наблюдение верно.Это не очевидно.Даже книга Брэда и Ожа (Разработка плагинов под ред. Wrox) содержит ошибку в примере на странице 267 в главе «Создайте свой собственный API-репозиторий».Как и вы, я потратил (потерял) время, чтобы найти проблему с двумя плагинами в альтернативном API ...

Решение: Помните, что первый параметр в фильтре WP является оригинальнымзначение передается в фильтр.Таким образом, чтобы объединить фильтры (перечисленные плагинами с использованием альтернативного API) ... первая строка должна быть:

function xiliw_altapi_information( $false, $action, $args ) {
    $plugin_slug = plugin_basename( __FILE__ );
        // Check if this plugins API is about this plugin
        if( $args->slug != $plugin_slug ) {
            return $false; // var to conserve the value of previous filter of plugins list in alternate api. fixes book error not val false
        }

        // POST data to send to your API
        $args = array(
            'action' => 'plugin_information',
            'plugin_name' => $plugin_slug,
            'version' => $transient->checked[$plugin_slug],
            'registration' => $this->registration
        );//../..

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

Если у меня будет время, я, вероятно, скоро опубликую более полную статью о классе для управления этим альтернативным мощным APIи как добавить его в -private- плагин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...