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)
GitHubUpdater.php
into your pluginGitHubUpdater.php
in your pluginGitHubUpdater
in your pluginHow 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 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'));
If your production branch is not the default main
, then specify it:
$gitHubUpdater->setBranch('master');
If you want to use an image within your plugin as the plugin icon, set a relative path to the file:
$gitHubUpdater->setPluginIcon('assets/icon.png');
The path should be relative from your plugin root. The icon appears on Dashboard > Updates next to your plugin.
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.