Страница плагина WP PWA Generator: сайт превращается в устанавливаемое приложение
Шесть модулей плагина: уведомления, офлайн, биометрия, карты, отложенные действия, иконка нейросетью

WP PWA Generator — сайт становится приложением

Наш плагин для WordPress: собирает из сайта устанавливаемое приложение — манифест, service worker, полный набор иконок и splash-экранов, оболочка с лентой, поиском и чтением офлайн. Без composer, без npm, без внешних сервисов.

Открыть страницу плагина

WP PWA Generator — собственный плагин: WordPress-сайт превращается в приложение

Сайт на WordPress у владельца уже есть, приложения нет. Сделать его руками — значит написать манифест, написать service worker, нарезать полтора десятка иконок под все платформы и собрать оболочку приложения; владелец сайта этого не умеет и не должен уметь. Отдельная сложность — хостинг: composer и сборщики есть далеко не везде, а плагин обязан работать на любой площадке.

Что сделали

  • Плагин собирает самостоятельное приложение в папку на этом же сайте — по умолчанию /app/, а если писать в корень нельзя, wp-content/uploads/pwa-app/. Туда кладутся index.html, service worker, manifest.webmanifest, иконки, splash-экраны, стили и скрипты; содержимое приложение берёт с этого же сайта через WP REST API.
  • Первое приложение появляется само, сразу после активации: имя и описание берутся из настроек сайта, иконка — из логотипа или рисуется из первой буквы названия. Владелец открывает админку и видит работающее приложение, а не пустой экран с кнопкой.
  • Оболочка для посетителя: лента материалов с подгрузкой по мере прокрутки, экран материала, выбранные страницы сайта в меню, поиск, рубрики и метки как фильтр, чтение офлайн и понятный экран «Нет сети» вместо белого пятна.
  • Приглашение установить приложение: кнопка на Android и на компьютере, подсказка «Поделиться → На экран „Домой“» на iPhone и iPad.
  • Приватность по умолчанию: приложение показывает только то, что REST-интерфейс отдаёт неавторизованному гостю, — закрытый и парольный контент в него не попадает.
  • Иконки нарезаются из одной картинки: 48, 72, 96, 128, 144, 152, 167, 180, 192, 256, 384, 512, maskable, apple-touch и favicon, плюс девять splash-экранов под актуальные iPhone и iPad. Предпросмотр показывает иконку круглой, квадратной и maskable с безопасной зоной — до сборки, а не после.
  • Шесть модулей, которые включаются галочкой и по умолчанию выключены: Web Push на собственных ключах VAPID (без Firebase и посредников), расширенный офлайн со стратегиями и лимитами по каждому виду ресурса, биометрия (замок приложения и вход по passkey), геолокация с картой на тайлах OpenStreetMap, отложенные действия с отправкой при появлении сети, генерация иконки нейросетью. Выключенный модуль не грузит в приложение ни байта своего кода.
  • Раздел «Продвижение»: блок и шорткод с кнопкой установки и инструкциями под iPhone, Android и компьютер, готовая страница «Как установить», черновик новости-анонса, QR-код, который рисуется на самом сайте без обращения к чужим сервисам, и пункт меню. Всё выключено по умолчанию; страница и запись создаются по кнопке и остаются черновиками, пока владелец их не опубликует.

Стек и технологии

WordPress и PHP

  • WP_Filesystem — запись собранного приложения в папку сайта
  • WP REST API как единственный источник содержимого приложения
  • Редактор изображений WordPress — нарезка 15 размеров иконок и 9 splash-экранов
  • Запасной каталог в uploads, когда в корень писать нельзя
  • Девять вкладок настроек в админке, PHP 7.4+, WordPress 5.8+

Браузерные технологии

  • Service worker со стратегиями кэширования по видам ресурсов
  • manifest.webmanifest и системное приглашение установки
  • Web Push на своих ключах VAPID: очередь партиями, отчёт о доставке
  • WebAuthn — замок приложения и вход в аккаунт по passkey, без пароля
  • Background Sync — отложенное действие уезжает один раз, а не дважды
  • Geolocation и карта на тайлах OpenStreetMap, без ключей и платных сервисов

Инженерное решение

  • Ни одной зависимости: нет composer, npm, vendor/, node_modules/
  • Ни одного обращения к CDN и ни одной чужой JS-библиотеки в собранном приложении
  • Файлы из архива — ровно те, что поедут на сайт: сборщик нельзя запустить на чужом хостинге, значит его не должно быть вообще
  • Каждый модуль изолирован и не подключается, пока выключен
  • Лицензия GPL-2.0-or-later

Результат

Версия 0.2.0, 515,7 КБ, PHP 7.4+ и WordPress 5.8+. Плагин раздаётся бесплатно: сайт получает установку на домашний экран, чтение офлайн и push-уведомления без единого внешнего сервиса и без сборщика на хостинге.

Бесплатная консультация

Позвольте нам помочь в развитии вашего бизнеса
Пишите нам: zanuda@zanuda.info
Сообщение отправлено