WordPress plugin to demonstrate how GitHubUpdater
can enable WordPress to check for and update a custom plugin that's hosted in either a public or private repository on GitHub.
The following plugin header fields are being used by GitHubUpdater
.
Specify your current plugin's version. For example:
Version: 1.0.0
Version is used to compare the installed plugin with the latest one on GitHub to determine if there are updates.
Specify URL to your plugin's changelog. For example:
Plugin URI: https://ryansechrest.github.io/github-updater-demo
Page will be embedded in a modal when viewing plugin details.
Specify URL to your plugin's repository on GitHub. For example:
Update URI: https://github.com/ryansechrest/github-updater-demo
Repository is used as the source for plugin updates.
Specify highest version of WordPress that your plugin was tested on. For example
Tested up to: 6.6
Will show the following compatibility message on Dashboard > Updates when your plugin has an update:
Compatibility with WordPress 6.6: 100% (according to its author)
- Copy
GitHubUpdater.php
into your plugin - Update namespace to match your plugin
- Require
GitHubUpdater.php
in your plugin - Instantiate
GitHubUpdater
in your plugin
How to add and configure GitHubUpdater
for your plugin.
Instantiate GitHubUpdater
and pass in the absolute path to your root plugin file.
$gitHubUpdater = new GitHubUpdater(__FILE__);
For example, __FILE__
might resolve to:
/var/www/domains/example.org/wp-content/plugins/<pluginDir>/<pluginSlug>.php
If your production branch is not the default main
, then specify it:
$gitHubUpdater->setBranch('master');
If your GitHub repository is private, then set your access token:
$gitHubUpdater->setAccessToken('github_pat_XXXXXXXXX');
It's not recommended to hardcode a token like you see above.
Either define a constant in wp-config.php
:
define( 'GITHUB_ACCESS_TOKEN', 'github_pat_XXXXXXXXXX' );
And then pass in the constant:
$gitHubUpdater->setAccessToken(GITHUB_ACCESS_TOKEN);
Or save your access token in wp_options
and pass it via get_option()
:
$gitHubUpdater->setAccessToken(get_option('github_access_token'));
Add all necessary hooks to WordPress to keep your plugin updated moving forward:
$gitHubUpdater->add();
This should be the last method call after GitHubUpdater
has been configured.
If you want a deep dive into how GitHubUpdater
works, check out this blog post.