{"id":24727396,"url":"https://github.com/sayhellogmbh/progressive-wordpress","last_synced_at":"2025-10-09T21:32:24.257Z","repository":{"id":47878887,"uuid":"116719801","full_name":"SayHelloGmbH/progressive-wordpress","owner":"SayHelloGmbH","description":"This Plugin adds progressive features to your WordPress site and converts it to a progressive web app","archived":false,"fork":false,"pushed_at":"2023-01-12T08:55:21.000Z","size":4504,"stargazers_count":59,"open_issues_count":45,"forks_count":14,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-03T09:04:16.497Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SayHelloGmbH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-08T19:40:10.000Z","updated_at":"2024-11-28T19:33:53.000Z","dependencies_parsed_at":"2023-02-09T11:00:50.060Z","dependency_job_id":null,"html_url":"https://github.com/SayHelloGmbH/progressive-wordpress","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/SayHelloGmbH/progressive-wordpress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SayHelloGmbH%2Fprogressive-wordpress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SayHelloGmbH%2Fprogressive-wordpress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SayHelloGmbH%2Fprogressive-wordpress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SayHelloGmbH%2Fprogressive-wordpress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SayHelloGmbH","download_url":"https://codeload.github.com/SayHelloGmbH/progressive-wordpress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SayHelloGmbH%2Fprogressive-wordpress/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002051,"owners_count":26083286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-27T14:58:46.474Z","updated_at":"2025-10-09T21:32:23.911Z","avatar_url":"https://github.com/SayHelloGmbH.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Progressive WordPress\n\n## Description\nIt has never been easier to add progressive web app features (PWA) to your WordPress website. It even supports [Accelerate Mobile Pages (AMP)](https://www.ampproject.org/) and is compatible with [OneSignal](https://onesignal.com/)!\n\n### Add to homescreen\nProvide an **integrated** user experience!\n\nProgressive WordPress makes it easy to encourage users to add your website to their homescreen. But that's not all. It also allows you to control the display behaviour of your website so it will be shown without any browser elements. Just like a native app.\n\n### Offline usage\n\nMake your website **reliable**. Even on flaky internet connections!\n\nNo connection? No problem. Progressive WordPress pre-caches all critical assets of your website, as well as all visited resources. So if there's no internet connection it will serve the resources from the local storage. No more error downasaur!\n\n### Push notifications\n\n**Send push notifications from the WP Admin interface!**\n\nKeep your users **engaged** by sending push notifications!\n\nYou just published new content and you want to let everyone know? Why not send a push notification? Progressive WordPress has an integrated connection to Firebase that lets you manage registered devices and send push notifications to all or selected devices!\n\n#### Support for OneSignal\nSince Version 2.1.0 Progressive WordPress fully supports [OneSignal](https://onesignal.com/). It detects if the [OneSignal WordPress Plugin](https://wordpress.org/support/plugin/onesignal-free-web-push-notifications/) is active and uses their push messaging functionalities instead.\n\n## ⚡ AMP ready\nProgressive WordPress is the first PWA-Plugin for WordPress that also supports Accelerated Mobile Pages!  \nIt precaches required resources, it adds special AMP caching strategies and it registers the ServiceWorker and the Web App Manifest also on AMP Pages.  \nProgressive WordPress currently supports [AMP for WordPress](https://wordpress.org/plugins/amp/) and [AMP for WP – Accelerated Mobile Pages](https://wordpress.org/plugins/accelerated-mobile-pages/).\n\n## Developers\nProgressive WordPress offers a lot of possibilities for developers the extend it the way you need it.\n\n### ServiceWorker\n**Add pre-cache resource:**  \n```php\nfunction myplugin_offline_precache( $caches ) {\n    $caches[] = 'https://myurl.com';\n    return $caches;\n}\nadd_filter( 'pwp_offline_precache', 'myplugin_offline_precache' );\n```\n\n### Manifest\n**Change the site Icon**  \nBy default Progressive WordPress takes the WordPress Favicon as the Site Icon. But you can change that by using this filter:  \n```php\nfunction myplugin_manifest_icon( $attachment_is ) {\n    return 10; //should be the Post ID of an attachment.\n}\nadd_filter( 'pwp_manifest_icon', 'myplugin_manifest_icon' );\n```\n\n**Add content to the manifest:**  \n```php\nfunction myplugin_manifest_values( $values ) {\n    $values['new'] = 'New';\n    return $values; //needs to be valid an array (will be json_endoded)\n}\nadd_filter( 'web_app_manifest', 'myplugin_manifest_values' );\n```\n\n### Push notifications\nIf you are using OneSignal please visit [https://documentation.onesignal.com](https://documentation.onesignal.com).  \n\n**customoize Button**  \nIf you don't want to use the built in Button, you can create your own from a shortcode or a php function:  \n```php\n// Shortcode\n[pwp_notification_button size=\"1rem\" class=\"your-class\"]\n\n// Function\n$atts = [\n    'class' =\u003e 'notification-button--fixedfooter',\n    'style' =\u003e \"background-color: #ff0000; color: #00ff00; font-size: 35px\",\n];\npwp_get_notification_button( $atts ); // returns the html template.\n```\n\n**Filter: `pwp_notification_button_attributes`**\n\nThis filter adds custom attributes to the notification button:\n```php\nfunction myplugin_notification_button_atttibutes( $attributes ) {\n    $attributes['data-test'] = 'My value';\n    return $attributes;\n}\nadd_filter( 'pwp_notification_button_attributes', 'myplugin_notification_button_atttibutes' );\n```\nThe key will be used as attribute key (will be sanitized `sanitize_title()`), the value will be used as attribute value (sanitized with `esc_attr()`).\n\n**Create your own button**  \nYou are also free to create your own button. The states are indicated as body classes:\n* `body.pwp-notification` if push notifications are supported\n* `body.pwp-notification.pwp-notification--on` if the device is registered\n* `body.pwp-notification.pwp-notification--loader` if there is something loading\n\nYou can then use the JS functions `pwpRegisterPushDevice();` and `pwpDeregisterPushDevice();`.\n\n### ⚡ AMP support\nProgressive WordPress currently supports [AMP for WordPress](https://wordpress.org/plugins/amp/) and [AMP for WP – Accelerated Mobile Pages](https://wordpress.org/plugins/accelerated-mobile-pages/).  \nYou can easily make your AMP Theme or Plugin comatible with the following hooks:\n\n**Filter: `pwp_site_supports_amp`**\n\nShould be set to true is the website supports AMP\n```php\nadd_filter( 'pwp_site_supports_amp', '__return_true' );\n```\n\n**Filter: `pwp_current_page_is_amp`**\n\nShould be set to true is the website supports AMP\n```php\nfunction myplugin_current_page_is_amp( $boolean ) {\n\tif ( this_site_is_an_amp_site() ) {\n\t\t$boolean = true;\n\t}\n\treturn $boolean;\n}\nadd_filter( 'pwp_current_page_is_amp', 'myplugin_current_page_is_amp' );\n```\n\n**Filter: `pwp_get_ampurl_from_url`**\n\nShould return the input-URL or the AMP-Version of this URL if exists.\n```php\nfunction myplugin_get_ampurl_from_url( $url ) {\n\tif ( this_url_amp_url() ) {\n\t\t$url = $url . 'amp/';\n\t}\n\treturn $url;\n}\nadd_filter( 'pwp_get_ampurl_from_url', 'myplugin_get_ampurl_from_url' );\n```\n\nYou can find a working example here: [https://github.com/SayHelloGmbH/progressive-wordpress/blob/master/3rdparty-support/amp.php](https://github.com/SayHelloGmbH/progressive-wordpress/blob/master/3rdparty-support/amp.php)\n\nYour Theme or plugin should also support the `amp_post_template_head` and `amp_post_template_footer` actions.\n\n## Privacy\nThis plugin does not use any Cookies. Also it does not collect any personal information without the following\n\n### Push notification\nIf the user subscribes to push notifications, the following informations will be saved inside the WP database:\n* Browser and Version\n* Operating System (and Version)\n* Device\n* Push Notification endpoint (a key that will be generated by the browser and the firebase server so push notifications can be sent)\n\nAlso if you send push notifications, those will be passed to [firebase cloud messaging](https://firebase.google.com/docs/cloud-messaging/) and they will send it to the client.\n\n## Changelog\n\n### 2.1.10\n* Changed Text Domain from pwp to progressive-wp\n* added privacy information to the readme\n* short_name can now contain spaces\n* added WP Rest to caching strategies\n\n### 2.1.9\n* Minor Bugfix (PHP Warning)\n\n### 2.1.8\n* Fixed Push notifications\n\n### 2.1.7\n* removed jQuery! It's now only pure JavaScript\n* conditional JS / CSS loading\n* small stability improvements for the Site Icon\n* httpsify start url\n\n### 2.1.6\n* AMP register ServiceWorker Bugfix\n\n### 2.1.5\n* Improvements for service worker registration\n* Add to homescreen prompt fix\n\n### 2.1.3\n* New Filter to adjust the Site Icon: `pwp_manifest_icon`\n* Fix for ServiceWorker registration inside subfolder\n* Multisite fixes for OneSignal compatibility\n\n### 2.1.2\n* Multisite fixes for OneSignal compatibility\n\n### 2.1.0\n* AMP support ⚡\n\t* Detect if AMP is supported\n\t* Detect if current site is AMP\n\t* register ServiceWorker for AMP\n\t* register Manifest for AMP\n\t* Add caching strategies for AMP pages and assets\n* Compatibility for [AMP for WordPress](https://wordpress.org/plugins/amp/)\n* Compatibility for [AMP for WP – Accelerated Mobile Pages](https://wordpress.org/plugins/accelerated-mobile-pages/)\n* Compatibility for [OneSignal](https://wordpress.org/support/plugin/onesignal-free-web-push-notifications/)\n\n### 2.0.1\n* New caching strategy \"Network Only\"\n* ServiceWorker minify\n* Precache fixes\n\n### 2.0.0\n* Complete UI over-worked\n* Offline support for Google Analytics!\n* Settings renamed and rearranged\n* Manifest Icon is now the same as Site Icon\n* Added [Workbox v3.4.1](https://developers.google.com/web/tools/workbox/)\n* Choose caching strategies for different request types\n* Future proof: Added support for the [PWA feature plugin](https://github.com/xwp/pwa-wp)\n\n### 1.3.2\n* Bugfix: Firebase Serverkey validation\n* Bugfix: upload images on settings page\n\n### 1.3.1\n* messed up some SVN-deployment\n\n### 1.3.0\n* added default settings on activate\n* Bugfix: Minifying JS threw an Uncaught SyntaxError\n\n### 1.2.0\n* added default settings on activate\n* added UTM tracking for manifest starturl and push notification redirect url\n\n### 1.1.2\n* required php Version is now 5.6\n\n### 1.1.1\n* critical Bugfix: JavaScript error\n\n### 1.1.0\n* Bugfix: better way to check if files have to be regenerated\n* Bugfix: PushPost not always registered\n* Improvement: new manifest icon sizes\n\n### 1.0.2\n* Bugfix: CSS z-index for notification button\n\n### 1.0.1\n* Bugfix: Pushpost labels\n* fixed spelling mistakes\n\n### 1.0.0\n* **Stable version 1.0.0**\n* added multisite support\n* Pushpost: send push notifications right from the post edit screen\n* Added translation: de_DE\n* Added translation: de_CH\n* push button color input-type improvements\n* add JS vars as `wp_add_inline_script`\n\n### 0.7.0\n* extended developer functionalities\n* added a latest push log\n* added a debug log\n* using `WP_Filesystem` API instead of php `file_put_contents`\n* Added \"orientation\" to manifest\n* Added colorpicker to settings\n* Fix: is_ssl() improvement\n\n### 0.6.2\n* Bugfix: featured image could not be changed if push notifications are enabled\n\n### 0.6.1\n* Bugfix: prohibit console error if sw not supported\n\n### 0.6.0\n* Added offline content\n* select front page as offline Page\n* Improvement: better hex check for manifest colors\n\n### 0.5.1\n* Bugfix: notification Button always visible\n\n### 0.5.0\n* Added push notifications!\n    * let the user manage their subscription\n    * manage all registered deivces\n    * send push notifications to all or specific devices\n* added ad status checks\n* force the browser to unregister all other serviceworkers\n* minor bugfixes and improvements\n\n### 0.4.0\n* you can now change the manifest start_url\n* Bugfixes\n\n### 0.3.0\n* changed offline indicator\n* added better instructions\n* codepattern improvements\n\n### 0.2.0\n* added offline indicator\n* Grammatical changes by [Mark Howells-Mead](https://profiles.wordpress.org/markhowellsmead/)\n* \"installable\" is now optional\n* Manifest Icon has to be png and min. 144x144px.\n\n### 0.1.0\n* Initial version from 2018\n\n## Contributors\n* Nico Martin | [nicomartin.ch](https://www.nicomartin.ch) | [@nic_o_martin](https://twitter.com/nic_o_martin)\n\n## License\nUse this code freely, widely and for free. Provision of this code provides and implies no guarantee.\n\nPlease respect the GPL v3 licence, which is available via [http://www.gnu.org/licenses/gpl-3.0.html](http://www.gnu.org/licenses/gpl-3.0.html)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsayhellogmbh%2Fprogressive-wordpress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsayhellogmbh%2Fprogressive-wordpress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsayhellogmbh%2Fprogressive-wordpress/lists"}