插件更新前的 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 运行功能的主要内容,如果未能解决你的问题,请参考以下文章

PHP - Wordpress - 插件小部件更新功能 - 更新数组值 [Foreach 循环不起作用]

如何阻止WordPress插件更新?

WordPress:无法安装或更新插件

如何编码 WordPress 插件软件更新?

WordPress的Jetpack插件更新

如何开发一个WordPress插件