我正在尝试完成以下任务:
无论何时我的插件通过wordpress插件更新功能进行更新,我都希望它执行一个功能,该功能在升级运行之前先备份某些插件文件。
我正在检查wordpress上的可用钩子,但是只发现了upgrader_process_complete钩子,根据wordpress Codex网站:
The upgrader_process_complete action hook is run when the download process for a plugin install or update finishes.
虽然“下载过程”有点不清楚,但是我已经检查了源代码,并且似乎在安装插件后,该钩子就被称为“钩子”,这意味着插件文件已被覆盖,无法再备份。
是否有一种方法可以完成此挂钩,或者wordpress在启动插件更新进度之前缺少此功能来调用某个功能?
答案 0 :(得分:0)
您可以使用WordPress的upgrade_pre_install
过滤器,该过滤器在升级开始之前执行以停用插件。请查看下面的代码段,希望这将有助于在更新之前解决插件备份问题。
add_filter( 'upgrader_pre_install', 'deactivate_plugin_before_upgrade_callback', 10, 2 );
function deactivate_plugin_before_upgrade_callback( $return, $plugin ) {
if ( is_wp_error( $return ) ) { //Bypass.
return $return;
}
// When in cron (background updates) don't deactivate the plugin, as we require a browser to reactivate it
if ( wp_doing_cron() ) {
return $return;
}
$plugin = isset( $plugin['plugin'] ) ? $plugin['plugin'] : '';
if ( empty( $plugin ) ) {
return new WP_Error( 'bad_request', $this->strings['bad_request'] );
}
if ( is_plugin_active( $plugin ) ) {
//You can play with plugin zip download over here
//Deactivate the plugin silently, Prevent deactivation hooks from running.
deactivate_plugins( $plugin, true );
}
return $return;
}