This is a custom update checker library for WordPress plugins. It lets you add automatic update notifications and one-click upgrades to your commercial and private plugins. All you need to do is put your plugin details in a JSON file, place the file on your server, and pass the URL to the library. The library periodically checks the URL to see if there's a new version available and displays an update notification to the user if necessary.
From the users' perspective, it works just like with plugins hosted on WordPress.org. The update checker uses the default plugin upgrade UI that will already be familiar to most WordPress users.
See this blog post for more information and usage instructions.
-
Make a JSON file that describes your plugin. Here's a minimal example:
{ "name" : "My Cool Plugin", "version" : "2.0", "author" : "John Smith", "download_url" : "http://example.com/plugins/my-cool-plugin.zip", "sections" : { "description" : "Plugin description here. You can use HTML." } }
See this table for a full list of supported fields.
-
Upload this file to a publicly accessible location.
-
Download the update checker, unzip the archive and copy the
plugin-update-checker
directory to your plugin. -
Add the following code to the main plugin file:
require 'plugin-update-checker/plugin-update-checker.php'; $myUpdateChecker = PucFactory::buildUpdateChecker( 'http://example.com/path/to/metadata.json', __FILE__ );
- You could use wp-update-server to automatically generate JSON metadata from ZIP packages.
- The second argument passed to
buildUpdateChecker
should be the full path to the main plugin file. - There are more options available - see the blog for details.
(GitHub support is experimental.)
-
Download the latest release, unzip it and copy the
plugin-update-checker
directory to your plugin. -
Add the following code to the main file of your plugin:
require 'plugin-update-checker/plugin-update-checker.php'; $className = PucFactory::getLatestClassVersion('PucGitHubChecker'); $myUpdateChecker = new $className( 'https://github.com/user-name/plugin-repo-name/', __FILE__, 'master' );
The third argument specifies the branch to use for updating your plugin. The default is
master
. If the branch name is omitted or set tomaster
, the update checker will use the latest release or tag (if available). Otherwise it will use the specified branch. -
Optional: Add a
readme.txt
file formatted according to the WordPress.org plugin readme standard. The contents of this file will be shown when the user clicks the "View version 1.2.3 details" link.
If your GitHub repository requires an access token, you can specify it like this:
$myUpdateChecker->setAccessToken('your-token-here');
The GitHub version of the library will pull update details from the following parts of a release/tag/branch:
- Changelog
- The "Changelog" section of
readme.txt
. - One of the following files: CHANGES.md, CHANGELOG.md, changes.md, changelog.md
- Release notes.
- The "Changelog" section of
- Version number
- The "Version" plugin header.
- The latest release or tag name.
- Required and tested WordPress versions
- The "Requires at least" and "Tested up to" fields in
readme.txt
. - The following plugin headers:
Required WP
,Tested WP
,Requires at least
,Tested up to
- The "Requires at least" and "Tested up to" fields in
- "Last updated" timestamp
- The creation timestamp of the latest release.
- The latest commit of the selected tag or branch that changed the main plugin file.
- Number of downloads
- The
download_count
statistic of the latest release. - If you're not using GitHub releases, there will be no download stats.
- The
- Other plugin details - author, homepage URL, description
- The "Description" section of
readme.txt
. - Remote plugin headers (i.e. the latest version on GitHub).
- Local plugin headers (i.e. the currently installed version).
- The "Description" section of
- Ratings, banners, screenshots
- Not supported.
- Theme Update Checker
- Debug Bar - useful for testing and debugging the update checker.
- Securing download links - a general overview.
- A GUI for entering download credentials