插件更新前的 Wordpress 运行功能
Posted
技术标签:
【中文标题】插件更新前的 Wordpress 运行功能【英文标题】:Wordpress run function before plugin is updating 【发布时间】:2019-10-04 08:55:43 【问题描述】:我正在努力完成以下工作:
每当我的插件通过 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】:您可以使用在升级开始之前执行的 WordPress 的upgrade_pre_install
过滤器来停用插件。检查下面的 sn-p,希望这将有助于在更新前解决插件备份问题。
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;
【讨论】:
感谢您的回答,让我快速尝试一下,我会告诉您的! @Tom 如果它解决了您的问题,这也将帮助其他人,请接受答案:)以上是关于插件更新前的 Wordpress 运行功能的主要内容,如果未能解决你的问题,请参考以下文章