插件更新前的Wordpress运行功能

时间:2019-05-17 03:58:07

标签: php wordpress plugins

我正在尝试完成以下任务:

无论何时我的插件通过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在启动插件更新进度之前缺少此功能来调用某个功能?

1 个答案:

答案 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;

}