ripper234
  • 0
Новичок

Обновления для частного плагина?

  • 0

Если я пишу частный плагин, есть ли способ использовать механизм автоматического обновления WordPress для его обновления?

Я хочу инкапсулировать функциональность, но она специфична для моих собственных 5 или около того блогов, поэтому она не является хорошим кандидатом на общедоступный ресурс плагинов. Но мне нравится механизм легкого обновления.

Есть ли способ сделать это?

Share
  1. Я полагаю, что это обсуждалось как фильтруемый вариант в списке рассылки wp-hackers еще в тот день. Это так и не было решено, IIRC. Я думаю, что соответствующее обсуждение было в этой теме: lists.automattic.com/pipermail/wp-hackers/2009-February/……но я могу ошибаться.

    • 0
  2. Похоже, применимый код находится в wp-includes/update.php, wp_update_plugins() :

    $to_send = (object) compact('plugins', 'active');
    
    $options = array(
        'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3), 
        'body' => array( 'plugins' => serialize( $to_send ) ),
        'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
    );  
    
    $raw_response = wp_remote_post('http://api.wordpress.org/plugins/update-check/1.0/', $options);
    

    Он специально проверяет api.wordpress.org. С технической точки зрения было бы возможно передать ключ внутрь $to_send, чтобы делегировать проверку, но, насколько мне известно, это не поддерживаемая функция.

    Если вы подключитесь set_site_transient_update_plugins, вы можете добавить свои собственные данные пакета в эту переменную. Похоже, что этим значениям будут доверять при запуске средства обновления плагинов. Смотрите wp-admin/update.php и wp-admin/includes/class-wp-upgrader.php . Учитывая код в этих двух функциях, я думаю, что можно было бы внедрить свой собственный сервер обновлений, вам просто нужно посмотреть, как отформатированы детали пакета, и сопоставить это.

    • 0
  3. Этот плагин сделает это за вас:

    Автоматические обновления для частных и коммерческих плагинов

    С незапамятных времен только плагины, размещенные в официальном каталоге плагинов WordPress.org, поддерживали автоматические обновления. Теперь я написал библиотеку PHP, которую вы можете использовать для добавления возможности автоматического обновления к любому плагину. Публичные, частные и коммерческие плагины — теперь все они могут пользоваться преимуществами автоматических уведомлений об обновлениях и обновлений одним щелчком мыши.

    Репозиторий GitHub

    • 0
  4. Если вам нравится бесплатный… и вы хотите использовать что-то вроде GitHub, GitLab или BitBucket, это качественный и поддерживаемый плагин для его обработки (поддерживает частные и корпоративные):

    https://github.com/afragen/github-updater

    • 0
  5. Я изучаю то же самое. Пара ссылок, которые я нашел, которые могут быть полезны:

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

    получить_апи_данные()

    <?php
    /*
    Retrieve items from the plugin API
    */
    function get_api_data($per_page, $page)
    {
        $fields = array(
            'downloaded' => true,
            'author' => false,
            'author_profile' => false,
            'contributors' => false,
            'requires' => true,
            'tested' => false,
            'compatibility' => false,
            'homepage' => false,
            'description' => false,
            'last_updated' => true,
            'added' => true
        );
        $body = (object) array('browse' => 'new', 'page' => $page, 'per_page' => $per_page, 'fields' => $fields);
        $post_data = array('action' => 'query_plugins', 'request' => serialize($body));
     
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_URL, 'http://api.wordpress.org/plugins/info/1.0/');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $return = curl_exec($ch);
        curl_close($ch);
     
        return unserialize($return);
    }
    
    • 0
  6. Вы можете попробовать плагин WordPress Development Kit. Недавно я перенес свою проприетарную систему обновлений на этот плагин. Плагин теперь служит внутренним процессором для моих премиальных обновлений плагина.

    По настройке это похоже на решение, предоставленное agileapricot выше. Он будет установлен как стандартный плагин на сайте WordPress. Вы размещаете свои премиум-файлы.zip и plugins.json в рабочих или предварительных каталогах на своем сервере (указывается в настройках плагина).

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

    Я использую этот плагин в течение нескольких месяцев, чтобы публиковать журнал изменений для моих премиальных надстроек, список текущих версий и списки загрузки для владельцев моей подписки Premier. Теперь, с версией 0.7.01, он работает как место назначения запросов для встроенных обновлений WordPress.

    Надеюсь, что некоторые из вас найдут его полезным.

    • 0
  7. Если вам нужно размещенное решение, которым вам не нужно управлять, проверьте Kernl ( https://kernl.us ). Это сервис, который предоставляет инфраструктуру для обновления плагинов и упрощает интеграцию в ваши собственные плагины.

    • 0
  8. Если вы заинтересованы в создании собственного сервера обновлений, достаточно легко обойтись без библиотек, используя всего два хука-фильтра plugins_api иsite_transient_update_plugins

    plugins_api – используется для получения информации о плагине и отображения ее в модальном окне, например:

    введите описание изображения здесь

    site_transient_update_plugins необходим для отправки обновления с вашего сервера.

    Подробнее об этом в этом руководстве: https://rudrastyh.com/wordpress/self-hosted-plugin-update.html

    • 0
  9. вы можете использовать этот коммерческий плагин: http://autohosted.com/ без ограничений и иметь несколько других функций, которые могут вам понадобиться:

    • Без ежемесячной платы
    • Неограниченное использование
    • Простая интеграция с темами и плагинами
    • Аутентификация по доменам, ключам и ролям
    • 0

Оставить ответ

You must login to add an answer.