在WordPress中自动插件更新后,插件将被停用

时间:2017-01-09 06:13:06

标签: wordpress

当我使用wp_maybe_auto_update()功能手动触发WordPress自动更新时,自动更新过程完成后,插件将被停用。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,挖掘代码揭示了原因。

Automatic_Upgrader使用Plugin_Upgrader更新插件。插件升级程序有一个方法deactivate_plugin_before_upgrade(),用于在升级之前停用插件,但仅限于特定情况。它包含以下这些行:

    // When in cron (background updates) don't deactivate the plugin, as we require a browser to reactivate it
    if ( wp_doing_cron() )
        return $return;

因此,当cron作业运行更新时,插件不会被停用。自动更新通常通过cron运行,因此代码假设它们始终是。如果在cron之外触发自动更新(例如,当您手动调用wp_maybe_auto_update()时),插件将被停用,但它们不会自动重新激活。

一种解决方案是通过在调用'wp_doing_cron'之前挂钩wp_maybe_auto_update()过滤器来欺骗升级者认为cron正在运行:

add_filter( 'wp_doing_cron', '__return_true' );
wp_maybe_auto_update();
remove_filter( 'wp_doing_cron', '__return_true' );