Есть несколько шагов, которые вы, вероятно, захотите предпринять, большинство из которых можно легко позаимствовать из того, как wordpress обрабатывает свои собственные внутренние обновления.
Не запускайте его каждый раз, когда страница администраторазагрузите, напишите свою собственную версию _maybe_update_plugins () и сделайте так, чтобы она проверяла интервал времени, вероятно, только один раз в день.
класс WordPress WP_Upgrader в'wp-admin / includes / class-wp-upgradeder.php' ( Я полагаю, вам нужно будет включить это в свой плагин ), делайте что хотите.Взгляните на wp-admin / update.php и убедитесь, что вы очень тщательно эмулируете здесь меры предосторожности, так как вы можете создать огромные дыры в безопасности, если не будете делать это тщательно.
Как только вы разобрались со своими уведомлениями иУбедитесь, что процесс безопасен, это так же просто, как передать URL для новой версии вашего плагина в код ниже, как "$ download_link".
$upgrader = new WP_Upgrader;
$upgrader->run(array(
'package' => '', //this should be the name of your plugin
'destination' => '', //this should be defined to the directory you want to install the plugin to
'clear_destination' => false, //set this if you want to remove the old version first
'clear_working' => true, //change this if you want to leave a copy of the zip file
'is_multi' => false, //only change this if you're calling the function multiple times
));
Если это не сработает ( У меня нет ни времени, ни мотива для его проверки ), еще немного покопайтесь в классе WP_Upgrader и позаимствуйте их функции для загрузки и извлечения файлов.