使WordPress成为核心

变更集56787


忽略:
时间戳:
2023年5月10日下午03:08:59(8个月(之前)
作者:
audrasjb公司
消息:

升级/安装:在批量升级期间检查插件兼容性。

以前,批量升级并没有验证插件包是否与网站的WordPress版本或服务器的PHP版本兼容。这可能导致
正在安装不兼容的更新,导致各种兼容性问题和错误。

此更改执行以下检查:

  • 如果可用,API响应要求需要_php检查值的兼容性。这通过以下方式节省了时间、磁盘空间、内存和文件操作

在下载和解压缩包之前升级失败。

  • 如果API检查通过,则使用插件升级程序::check_package()以确保存在插件文件,并且

插件的“RequiresWP”和“Requires PHP”头文件是兼容的(如果有)。这确保了API响应和插件文件头之间的不匹配
不会导致安装不兼容的插件。

Props salcode、afragen、mukesh27、iammehedi1、zunaid321、johnbillion、SergeyBiryukov、costdev、nicolefurlan、audrasjb、nicolefurlan。
合并[56525]到6.3分支。
修复#59198.

--

_M 6.3模块
M 6.3/src/wp-admin/includes/class-plugin-upgrader.php

地点:
分支/6.3
文件夹:
2已编辑

图例:

未修改
补充
远离的
  • 分支/6.3

    • 财产svn:mergeinfo(合并信息)改变
      /树干合并:56525
  • 分支/6.3/src/wp-admin/includes/class-plugin-upgrader.php

    r56174 56787兰特  
    275275*@since 3.7.0添加了`$args`参数,可以选择清除插件更新缓存。
    276276     *
     277*@global string$wp_version WordPress版本字符串。
     278     *
    277279*@param string[]$plugins相对于插件目录的插件文件路径数组。
    278280*@param数组$args{
     
    284286     */
    285287公共函数bulk_upgrade($plugins,$args=array()){
     288全局$wp_version;
     289
    286290$defaults=数组(
    287291“clear_update_cache”=>true,
     
    344348$this->skin->plugin_active=is_plugin_active($plugin);
    345349
    346 $result=$this->运行(
    347 阵列(
    348 “package”=>$r->package,
    349 “目的地”=>WP_PLUGIN_DIR,
    350 “clear_destination”=>true,
    351 “clear_working”=>true,
    352 “is_multi”=>为真,
    353 “hook_extra”=>数组(
    354 “插件”=>$plugin,
    355 'temp_backup'=>数组(
    356 'slug'=>目录名($plugin),
    357 “src”=>WP_PLUGIN_DIR,
    358 “dir”=>“插件”,
     350if(isset($r->需要)&!is_wp_version_compatible($r->需要){
     351$result=新WP_Error(
     352'不兼容的wp_required_version',
     353短跑(
     354/*翻译人员:1:当前WordPress版本,2:新插件版本所需的WordPres版本*/
     355__('您的WordPress版本是%1$s,但新插件版本需要%2$s。'),
     356$wp_version,
     357$r->需要
     358                    )
     359                );
     360
     361$this->skin->before($result);
     362$this->skin->error($result);
     363$this->skin->after();
     364}elseif(isset($r->requires_php)&!is_php_version_compatible($r->requires_php){
     365$result=新WP_Error(
     366'不兼容_php_required_version',
     367冲刺(
     368/*转换器:1:当前PHP版本,2:新插件版本所需的PHP版本*/
     369__('您服务器上的PHP版本是%1$s,但新插件版本需要%2$s。'),
     370PHP_版本,
     371$r->需要_php
     372                    )
     373                );
     374
     375$this->skin->before($result);
     376$this->skin->error($result);
     377$this->skin->after();
     378}其他{
     379add_filter('upgrader_source_selection',数组($this,'check_package'));
     380$result=$this->运行(
     381阵列(
     382“package”=>$r->package,
     383“目的地”=>WP_PLUGIN_DIR,
     384“clear_destination”=>true,
     385“clear_working”=>true,
     386“is_multi”=>为真,
     387'hook_extra'=>数组(
     388'plugin'=>$plugin,
     389“temp_backup”=>数组(
     390“slug”=>目录名($plugin),
     391“src”=>WP_PLUGIN_DIR,
     392“dir”=>“插件”,
     393                            ),
    359394),
    360                     ),
    361                 )
    362             );
     395                    )
     396                );
     397remove_filter('upgrader_source_selection',数组($this,'check_package'));
     398            }
    363399
    364400$results[$plugin]=$result;
注:请参见TracChangeset(跟踪变更集)获取有关使用变更集查看器的帮助。