插件升级程序::bulk_upgrade(字符串[] $个插件阵列 $个参数 = 数组() ):数组| false

一次升级多个插件。

参数

$个插件字符串[]必修的
相对于插件目录的插件文件的路径数组。
$个参数阵列可选择的
同时升级多个插件的其他理由。
  • 清除更新缓存 布尔
    如果成功,是否清除插件更新缓存。默认为true。

违约:数组()

返回

数组| false由插件文件索引的结果数组,如果无法连接到文件系统,则为false。

来源

公共函数bulk_upgrade($plugins,$args=array()){全局$wp_version;$defaults=数组(“clear_update_cache”=>true,);$parsed_args=wp_parse_args($args,$defaults);$this->init();$this->bulk=true;$this->upgrade_strings();$current=get_site_transient('update_plugins');add_filter(“upgrader_clear_destination”,数组($this,“delete_old_plugin”),10,4);$this->skin->header();//首先连接到文件系统。$res=$this->fs_connect(数组(WP_CONTENT_DIR,WP_PLUGIN_DIR));if(!$res){$this->skin->footer();返回false;}$this->skin->bulk_header();/**只有在以下情况下才能启动维护模式:*-运行Multisite并且指定了一个或多个插件,或者*-具有可用更新的插件当前处于活动状态。*@todo对于多站点,如果可能的话,维护模式应该只适用于单个站点。*/$维护=(is_multisite()&&!空($plugins));foreach($plugins作为$plugin){$maintenance=$maintenance||(is_plugin_active($plugin)&&isset($current->response[$plugin]));}if($维护){$this->maintenance_mode(true);}$results=数组();$this->update_count=count($plugins);$this->update_current=0;foreach($plugins作为$plugin){++$this->update_current;$this->skin->plugin_info=get_plugin_data(WP_plugin_DIR.'/'.$plugin,false,true);if(!isset($current->response[$plugin]){$this->skin->set_result('up_to_date');$this->skin->before();$此->皮肤->反馈(“up_to_date”);$this->skin->after();$results[$plugin]=true;继续;}//获取zip文件的URL。$r=$current->响应[$plugin];$this->skin->plugin_active=is_plugin_active($plugin);if(isset($r->需要)&!is_wp_version_compatible($r->需要){$result=新WP_Error('不兼容的wp_required_version',冲刺(/*翻译人员:1:当前WordPress版本,2:新插件版本所需的WordPres版本*/__('您的WordPress版本是%1$s,但新插件版本需要%2$s。'),$wp_version,$r->需要));$this->skin->before($result);$this->skin->error($result);$this->skin->after();}elseif(isset($r->requires_php)&&!is_php_version_compatible($r->requires_php){$result=新WP_Error('不兼容_php_required_version',冲刺(/*转换器:1:当前PHP版本,2:新插件版本所需的PHP版本*/__('服务器上的PHP版本是%1$s,但新插件版本需要%2$s。'),PHP_版本,$r->要求_php));$this->skin->before($result);$this->skin->error($result);$this->skin->after();}其他{add_filter('upgrader_source_selection',数组($this,'check_package'));$result=$this->运行(阵列('包'=>$r->包,“目的地”=>WP_PLUGIN_DIR,“clear_destination”=>true,“clear_working”=>true,“is_multi”=>为真,“hook_extra”=>数组(“插件”=>$plugin,“temp_backup”=>数组(“slug”=>目录名($plugin),“src”=>WP_PLUGIN_DIR,“dir”=>“插件”,),),));remove_filter('upgrader_source_selection',数组($this,'check_package'));}$results[$plugin]=$result;//防止凭据身份验证屏幕多次显示。if(false===$result){断裂;}}//结束每个$plugins。$this->maintenance_mode(false);//强制刷新插件更新信息。wp_clean_plugins_cache($parsed_args['clear_update_cache']);/**此操作记录在wp-admin/includes/class-wp-upgrader.php中*/操作(_A)(“upgrader_process_complete”,$这个,阵列(“action”=>“update”,“type”=>“plugin”,“批量”=>true,“插件”=>$plugins,));$this->skin->bulk_footer();$this->skin->footer();//清理我们的钩子,以防其他东西对此连接进行升级。remove_filter('upgrader_clear_destination',数组($this,'delete_old_plugin'));/**通过删除以下内容,确保任何未来自动更新失败都会触发失败电子邮件*插件更新成功时列表中的最后一个失败通知。*/$past_failure_emails=获取选项('auto_plugin_theme_update_emails',array());foreach($results作为$plugin=>$result){//当插件无法手动更新时,保留上次失败通知。如果(!$result||is_wp_error($result)||!isset($past_failure_emails[$plugin]){继续;}取消设置($past_failure_emails[$plugin]);}更新选项('auto_plugin_theme_update_emails',$past_failure_emails);返回$results;}

挂钩

do_操作('upgrader_process_complete',WP_升级程序 $升级程序阵列 $挂钩_额外 )

升级程序过程完成时激发。

变更日志

版本描述
3.7.0这个$个参数添加了参数,使清除插件更新缓存成为可选。
2.8.0介绍。

用户贡献的笔记

你必须登录在能够发表注释或反馈之前。