Annoyed by the update information for plugins which are under version control like Git or SVN? Use this snippet to finally get rid of them.
/**
* Removes plugins under version control from update checks.
*
* @param array $request An array of HTTP request arguments.
* @param string $url The request URL.
* @return $array An array of HTTP request arguments.
*/
add_filter( 'http_request_args', function( $request, $url ) {
if ( false === strpos( $url, 'api.wordpress.org/plugins/update-check' ) ) {
return $request;
}
$vcs_dirs = [ '.git', '.svn', '.hg', '.bzr' ];
$plugins = json_decode( $request['body']['plugins'] );
foreach ( array_keys( (array) $plugins->plugins ) as $plugin ) {
$plugin_dir = WP_PLUGIN_DIR . '/' . dirname( $plugin ) . '/';
// Search directory for evidence of version control.
foreach ( $vcs_dirs as $vcs_dir ) {
if ( is_dir( $plugin_dir . $vcs_dir ) ) {
// Remove plugin from the update check.
unset( $plugins->plugins->$plugin );
break;
}
}
}
$request['body']['plugins'] = wp_json_encode( $plugins );
return $request;
}, 10, 2 );
You can extend $vcs_dirs
with additional directories to add support for your VCS.
Photo by TUAN ANH TRAN.