Создание функционала уведомлений об обновлениях для моих тем

1 мая 2011 г., 14:27:29
Просмотры: 19.3K
Голосов: 17

Вопрос простой :) Я создаю тему, которую буду использовать на множестве сайтов. И не хочу каждый раз при исправлении багов или обновлении темы заходить на каждый сайт и загружать файлы по FTP.

Существует ли способ реализовать систему обновлений, подобную той, что используется для плагинов из официального репозитория WordPress?

С нетерпением жду ваших ответов. Спасибо!

Решение:

Спасибо Chip Bennett за отличную ссылку. Библиотека для обновления тем теперь доступна на этом сайте. Вы можете найти её здесь: http://w-shadow.com/blog/2011/06/02/automatic-updates-for-commercial-themes/

Всегда рассматривайте возможность пожертвования, если видите отличную работу, сделанную доступной бесплатно.

1
Комментарии

Используйте Plugin Update Checker! Работает как для плагинов, так и для тем. https://github.com/YahnisElsts/plugin-update-checker

transbetacism transbetacism
4 янв. 2018 г. 23:47:57
Все ответы на вопрос 2
4

Вы также можете подключиться к основной процедуре обновления. (Я ищу ссылки на руководства, но сегодня мой поисковый навык подводит.)

РЕДАКТИРОВАНО:

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

1 мая 2011 г. 17:30:34
Комментарии

Думаю, это pre_set_site_transient_update_plugins

Wyck Wyck
1 мая 2011 г. 18:27:25

Спасибо! Я изучил вашу ссылку, но код плагина не сработал. Тогда я попросил автора модифицировать библиотеку для тем, и через пару дней он сделал это! Теперь всё работает отлично! Я добавлю ссылку в свой вопрос. Спасибо!!

Sisir Sisir
8 июн. 2011 г. 20:01:29

Вот руководство по автоматическому обновлению тем с того же сайта: http://w-shadow.com/blog/2011/06/02/automatic-updates-for-commercial-themes/

Jaroslav Klimčík Jaroslav Klimčík
11 янв. 2016 г. 20:38:25

pre_set_site_transient_update_plugins выполняется только для активной темы на основном сайте. Все остальные обновления пользовательских тем не будут проверяться, даже если это мультисайт и на других сайтах активированы другие пользовательские темы.

vee vee
21 нояб. 2016 г. 06:01:58
3

Интересный вопрос! На самом деле, я считаю, что вам стоит создать сервис для проверки обновлений! Например, yourdomain.com/api/update-check! Этот сервис может возвращать XML, JSON или другую полезную информацию об обновлении, такую как версия, URL файла обновления (обновляемый файл должен быть в формате ZIP)!

В вашей теме вы можете использовать:

    <?php define('OWN_THEME_VERSION', '1.1');

Когда вы обнаружите обновление по указанному URL (yourdomain.com/api/update-check), предположим, он возвращает JSON-данные следующего вида:

{"version":"1.2","file":"theme.zip"}

Вы сравниваете версии для проверки наличия нового обновления! Затем переключаетесь на стандартную тему с помощью функции http://codex.wordpress.org/Function_Reference/switch_theme (чтобы пользователи видели работающий сайт)!

Далее ваш код может использовать cURL или даже file_get_contents для загрузки ZIP-файла (в данном случае theme.zip)!

После этого вы удаляете все файлы в папке вашей темы, распаковываете ZIP-архив и копируете его содержимое в папку темы!

Думаю, такой подход должен сработать!

Возможно, вам будет полезно изучить, как это реализовано в WordPress! Я нашел соответствующий код в файле wp-admin/includes/update-core.php, строка 288, функция update_core

1 мая 2011 г. 15:23:37
Комментарии

По сути то же самое, но вместо использования curl или file_get используйте WordPress HTTP API, http://codex.wordpress.org/HTTP_API

Wyck Wyck
1 мая 2011 г. 15:35:29

Круто, Wyck, я этого не знал ;)!

kureikain kureikain
1 мая 2011 г. 15:39:21

наконец-то появилось время начать исследование по этому вопросу! Для текущей версии темы я могу использовать эту функцию http://codex.wordpress.org/Function_Reference/get_theme_data . Я начну работать с подходом, который вы указали.

Sisir Sisir
29 мая 2011 г. 23:06:11