Issue with Transients
unknown
php
4 years ago
2.0 kB
221
No Index
add_filter( 'site_transient_update_plugins', 'push_update' );
function push_update( $transient ) {
$slug = 'my-plugin';
$plugin_name = 'my-plugin/my-plugin.php';
$plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_name );
$plugin_current_version = $plugin_data['Version'];
$result = wp_remote_get('https://example.com/myapi');
if (
is_wp_error( $result )
|| 200 !== wp_remote_retrieve_response_code( $result )
|| empty( wp_remote_retrieve_body( $result ) )
) {
return $transient;
}
$remote = json_decode( $result['body'] );
// Query premium/private repo for updates.
$update = (object) array(
'id' => $plugin_name,
'slug' => $slug,
'plugin' => $plugin_name,
'new_version' => $remote->version,
'package' => $remote->url,
'url' => '',
'icons' => array(),
'banners' => array(),
'banners_rtl' => array(),
'tested' => '',
'requires_php' => '',
'compatibility' => new stdClass(),
);
if ( version_compare( $plugin_current_version, $remote->version, '<' ) ) {
// Update is available.
// $update should be an array containing all of the fields in $item below.
$transient->response[ $plugin_name ] = $update;
} else {
// No update is available.
$item = (object) array(
'id' => $plugin_name,
'slug' => $slug,
'plugin' => $plugin_name,
'new_version' => $plugin_current_version,
'url' => '',
'package' => '',
'icons' => array(),
'banners' => array(),
'banners_rtl' => array(),
'tested' => '',
'requires_php' => '',
'compatibility' => new stdClass(),
);
// Adding the "mock" item to the `no_update` property is required
// for the enable/disable auto-updates links to correctly appear in UI.
$transient->no_update[ $plugin_name ] = $item;
}
return $transient;
}Editor is loading...