当我使用wp_maybe_auto_update()
功能手动触发WordPress自动更新时,自动更新过程完成后,插件将被停用。
答案 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' );