Adobe Commerce 2.4.4发行说明
Adobe Commerce 2.4.4引入了对PHP 8.1的支持。已更新所有项目库和依赖项,以便与PHP 8.1兼容。核心编辑器依赖项和第三方库也已升级到与PHP 8.1兼容的最新版本。此版本还支持OpenSearch 1.2。
此版本包括近250项质量修复和增强功能。
应用AC-3022.patch
以继续将DHL作为装运承运人提供
DHL已引入架构版本6.2,并且将在不久的将来弃用架构版本6.0。 支持DHL集成的Adobe Commerce 2.4.4及更早版本仅支持版本6.0。部署这些版本的商家应尽早应用AC-3022.patch
,以继续将DHL作为装运承运人提供。 有关下载和安装修补程序的信息,请参阅应用修补程序以继续将DHL作为运输运营商提供知识库文章。
其他发行信息
虽然这些功能的代码与Adobe Commerce核心代码的季度发布捆绑在一起,但其中几个项目(例如B2B、Page Builder和Progressive Web Application(PWA)Studio)也单独发布。 每个项目的文档中都提供了特定于项目的单独发行信息,其中记录了这些项目的错误修复。
composer.json
文件中的可信插件。 当前,composer.json
文件中包含但未标记为受信任的插件会自动安装。 但是,从2022年7月起,Composer将不加载插件,除非它们被明确允许。 有关如何修改composer.json
文件以明确允许加载插件的说明,请参阅升级到Adobe Commerce 2.4.4🔗知识库文章时的Composer插件问题。此版本中包含的修补程序
Adobe Commerce 2.4.4包括针对Adobe Commerce和Magento Open Source2.4.3、2.4.3-p1和2.3.7-p2的以下修补程序解决的所有问题:
-
已在此版本中解决
MDVA-43395_EE_2.4.3-p1_COMPOSER_v1.patch
和MDVA-43443_EE_2.4.3-p1_COMPOSER_v1.patch
解决的漏洞。 -
AC-384_Fix_Incompatible_PHP_Method__2.4.3_ce.patch
。 该修补程序解决了在升级过程中发生的严重PHP错误。 请参阅Adobe Commerce升级2.4.3、2.3.7-p1 PHP致命错误修补程序知识库文章。
安装2.4.4后应用此修补程序
我们建议您在安装Adobe Commerce 2.4.4后应用以下修补程序:
braintree-disabled-partial-capture-for-applepay-googlepay.patch
。 对于通过Braintree使用Apple Pay支付的订单,商家无法提交部分退款。 当商家尝试从订单发票创建部分退款的贷项通知单时,退款数量 字段不可编辑。 此修补程序解决了该问题。 请参阅Adobe Commerce 2.4.4:无法创建部分发票知识库文章。
Adobe Commerce 2.4.4亮点
在此版本中查找以下要点。
安全性增强
此版本包括一项安全修复和平台安全改进。 此安全修复程序已回溯到Adobe Commerce 2.4.3-p2和Adobe Commerce 2.3.7-p3。
到目前为止,尚未发生与这些问题相关的已确认攻击。 但是,可能会利用某些漏洞访问客户信息或接管管理员会话。 这些问题中的大多数要求攻击者首先获得对管理员的访问权限。 因此,我们提醒您采取一切必要步骤保护您的管理员,包括但不限于以下工作:
- IP 列入允许列表
- 双重身份验证
- 使用VPN
- 使用唯一位置而不是
/admin
- 良好的密码卫生
有关这些已修复问题的最新讨论,请参阅Adobe安全公告。
其他安全增强功能
此版本的安全改进改进了与最新安全最佳实践的符合性,包括:
-
在2.3.4中,作为降低安全风险的一部分,为了支持更严格的变量语法,已弃用电子邮件变量用法。 此版本中完全删除了此旧版行为,以继续降低安全风险。
因此,在升级到Adobe Commerce 2.4.4或Magento Open Source2.4.4后,在以前版本的Adobe Commerce中有效的电子邮件或新闻稿模板可能无法正常工作。受影响的模板包括自定义模块或第三方扩展中的管理员覆盖、主题、子主题和模板。 即使在使用升级兼容性工具修复已弃用的使用之后,您的部署仍可能会受到影响。 请参阅迁移自定义电子邮件模板,以了解有关迁移受影响模板的潜在影响和准则的信息。
-
集成令牌无法再用于API持有者令牌身份验证。 以前,集成令牌可用作基于令牌的身份验证的独立密钥。 但是,由于永不过期的访问令牌的安全影响,默认情况下已禁用此行为。 上一个行为可以通过命令行或管理员启用。 请参阅基于令牌的身份验证。
-
会话ID不再存储在数据库中。
-
现在,将OAuth访问令牌和密码重置令牌存储在数据库中时会进行加密。
-
已加强验证,以防止上载非字母数字文件扩展名。
-
为优惠券代码添加了reCAPTCHA支持。
-
当Adobe Commerce处于生产模式时,Swagger现在默认处于禁用状态。
-
Adobe Commerce店面现在默认启用HTTPS。 默认情况下启用 在店面上使用安全URL 和 在管理员中使用安全URL 设置,并且所有内置Cookie现在都设置为安全。
-
现在,所有Adobe Commerce安装都需要依赖项混淆插件。 以前,仅基于编辑器的安装需要此插件。 它现在允许使用可信版本。 商家可以绕过此插件中设置的限制,这些限制禁止对Composer安装进行某些组合。 对于受信任的版本,可以绕过约束,Adobe Commerce现在会在继续安装之前显示警告。
-
开发人员现在可以基于每个端点配置Adobe Commerce RESTful端点接受的阵列大小限制。 查看API安全性。
-
添加了以下机制:限制用户可在系统范围内通过Web API请求的资源大小和数量,以及覆盖单个模块的默认值。 这解决了
MC-43048__set_rate_limits__2.4.3.patch
解决的问题。 查看API安全性。
平台增强功能
Adobe Commerce 2.4.4现在支持PHP 8.1。已更新所有项目库和依赖项,以便与PHP 8.1兼容。其他平台增强功能包括:
-
Adobe Commerce 2.4.4提供对Elasticsearch7.16和OpenSearch 1.2的支持。部署托管在本地的Adobe Commerce商家可以使用任一解决方案。 但是,OpenSearch现在是云中托管的Adobe Commerce 2.4.4部署的默认搜索引擎。 所有使用云部署且升级到版本2.4.4的客户都必须使用OpenSearch。 请参阅在Cloud 2.4.4上切换到OpenSearch for Adobe Commerce
-
JQuery
库已升级到版本3.6。jquery-ui
库已升级到版本1.13.0。其他几个JavaScript库已更新至最新版本。 -
现在支持TinyMCE 5.8.1。 TinyMCE4已从代码库中移除。
-
RequireJS
库已升级到最新版本(v2.3.6)。 GitHub-33672 -
PHPUnit已升级到最新版本(9.5.x)。 已更新测试和测试框架,以便与新版本兼容。
-
大多数Laminas依赖项已升级到与PHP 8.1兼容的最新版本。从代码库中移除了3个Laminas依赖关系,以减少依赖关系数。
jQuery UI升级
jQuery UI已升级到最新版本(v1.13.0)。 已删除以下v1.10.0 jQuery组件:
性能和可扩展性增强
Adobe Commerce性能增强提升了高吞吐量订单处理和消息队列优化。 此版本中引入的异步订单功能可支持每小时创建约60,000个订单。 早期版本的Adobe Commerce支持每小时处理约10,000个订单,这给闪电型销售带来了潜在的瓶颈。 新的多使用者功能支持在单个云实例上扩展消息队列使用者的数量,并增加了每小时处理的订单数。
此版本中的性能增强:
-
与同步执行相比,AsyncOrder功能支持的订单放置速度更快。 启用AsyncOrder后,购物者在店面完成其他任务时在后台执行下单。
-
新的 在购物车加载时启用库存检查 配置选项在购物车中加载产品时提供可切换的库存检查。 默认情况下处于启用状态。 禁用此选项后,Adobe Commerce会在加载报价时跳过库存检查,从而加快结帐速度,尤其是对于包含许多项目的购物车。
-
新的
multiple_processes
配置选项支持在多个进程中运行并行使用者。 以前,cron
在需要时只运行一个使用者。 启动多个使用者以并行运行进程可以提高任务执行速度。 要启用此功能,请将multiple_processes
添加到app/etc/env.php
文件。 -
通过增加
php.ini
文件中max_input_vars
设置的内存限制以支持输入变量卷,改进了包含750多种可配置产品的购物车的购物车操作。 -
通过延迟总计算来优化结账时的销售规则处理。 通常,每当购物者将产品添加到购物车、更新产品数量或单击 下订单 按钮时,就会进行销售规则处理。 商家可以通过在
env.php
文件中设置checkout/deferred_total_calculating
变量来启用此延迟。 或者,您可以运行bin/magento setup:config:set --deferred-total-calculating 1|0
。 -
改进了异步下单期间受购物车价格规则影响的订单的验证流程。
请参阅高吞吐量订单处理。
GraphQL
此版本包括这些GraphQL增强功能:
- 可协商报价的完整GraphQL覆盖范围。 B2B公司用户现在可以使用GraphQL完成与可协商报价相关的所有任务。 此API的早期版本支持协商流程,但不支持签出。
新突变
-
性能改进:
-
GraphQL购物车操作的性能已得到改进。 现在,在GraphQL请求期间只调用一次
collectQuoteTotals()
方法,这缩短了响应时间。 -
通过更改GraphQL请求的缓存方式,店面性能得到了改进。 Fastly和Varnish现在缓存随
auth
令牌发送的GraphQL请求。
-
-
新店面相关的管理员配置设置。
storeConfig
查询现在返回“零小计结帐”和“支票汇票”付款方法的配置设置。 -
已更新核心GraphQL库。 使核心GraphQL能够运行的
webonyx
库已升级到版本^14.9。 -
修复了包含多站点和多语言存储的GraphQL中的翻译问题。 GraphQL解析器现在会按预期根据存储范围返回翻译后的字符串。
-
GraphQL现在为New Relic提供描述性交易名称,这对于调试很有帮助。 GitHub-30915
有关这些增强功能的详细信息,请参阅GraphQL开发人员指南。
B2B
此版本包含多个错误修复。 请参阅B2B发行说明。
供应商捆绑的扩展
除Braintree之外,所有供应商捆绑的扩展都已从Adobe Commerce 2.4.4代码库中移除。 商家应该迁移到官方扩展,这些扩展在Commerce Marketplace上可用。
PWA Studio
PWA Studiov.12.3.0与Adobe Commerce 2.4.4兼容。它包括对reCaptcha、页面生成器内容优化和个性化内容的支持。 有关增强功能和错误修复的信息,请参阅PWA Studio版本。 有关PWA Studio版本及其兼容的Adobe Commerce核心版本的列表,请参阅版本兼容性。
PayPal付款增强功能
-
现在支持Venmo支付选项。
-
Pay Later已添加为购物者的选项,它根据购物者的位置而不是商家的位置来设置。
-
商家现在可以在自己选择的国家测试购物者体验时,设定购物者所在的国家/地区。 以前,检测仅限于针对商家所在国家/地区的检测。 此更改仅在沙盒模式下有效。
-
结账页面上的消息现在可准确显示购物者在使用“稍后支付”时预计将支付多少以及支付多少费用。
实时搜索
Live Search现在支持PHP 8.1。
在更新的Live Search 安装期间,新Magento_ElasticsearchCatalogPermissionsGraphQl
模块被禁用。 现有的Live Search安装必须升级到Live Search 2.0.0才能利用这些功能。 有关详细信息,请参阅Live Search 发行说明。
辅助功能更新
此版本提高了对标准辅助功能准则的符合性。 这些增强功能可以改善视力有限或语言、认知和学习能力有限的用户体验。 屏幕Reader工具的性能也得到了提高。
辅助功能增强包括:
- 工具提示链接包含文本和准确、以任务为中心的输入可见标签
- 编辑按钮现在具有唯一的文本。
- 现在,管理员按钮具有符合AA标准的唯一、可访问和描述性目的
- 传达意义的图标图像现在提供了替换文本。
- 增强了管理员按钮和表单字段中的对比度,使用相邻颜色时对比度至少为3:1。
页面生成器
- 商家现在可以向图像(图像、横幅、幻灯片)添加替换文本(
alt_text
)以增强内容可访问性。 GitHub-746
修复的问题
我们正在修复Adobe Commerce 2.4.4核心代码中的数百个问题。 下面介绍了这些已修复问题的子集。
安装、升级、部署
- Adobe Commerce现在会按预期在生成日志文件中记录静态内容部署错误。
- 数据修补程序无法再忽略表的唯一约束并将重复值插入到MySQL数据库表中。 以前,修补程序可能会插入重复的值,这会损坏数据库。
- 商家现在可以成功地从带Klarna的Adobe Commerce 2.4.2部署升级到Adobe Commerce 2.4.3。GitHub-33760
- 现在可以从命令行成功更改Sitemap生成器配置。 以前,当您尝试在管理员之外更改Sitemap配置时,Adobe Commerce会显示此错误:
Import failed: Notice: Trying to access array offset on value of type null in app/code/Magento/Cron/Model/Config/Backend/Sitemap.php on line 78
。 GitHub-31428
- 在
config.php
中更新time
值时,bin/magento app:config:import
命令现在可正确执行。 以前,通过手动编辑(即不使用管理员)更改产品警报配置会导致错误。
辅助功能
- 解决了在购物车和结账页面上导航时的辅助功能错误。 GitHub-34483
- 屏幕阅读器现在可以阅读产品页面上的所有相关表单元素。
- 整个店面的图像删除和移动图标按钮的对比度已得到改进,以提高弱视用户的可读性。
- 为用于在整个产品界面中执行搜索的放大镜图标指定了可访问的名称和替换文本。
- 现在可以使用Tab键访问富文本编辑器工具栏。
- 此项目具有权重,在 目录 > 产品 详细信息页面上选择输入,现在具有可见的标签和可访问的名称。
- 控件的可访问名称现在包含其可见标签的文本,其中包含每页项目数下拉列表。
- 当表折叠时,目录 > 产品 详细信息页面上的表控件现在具有可见的标签和可访问的名称。
- 现在,“产品”表格中的“编辑链接”具有唯一、有意义的链接文本。
- 扩展工具提示的触发器现在提供文本名称。
- 店面各处的按钮现在都有独特的描述性可访问名称。 以前,带有文本按钮和相邻向下箭头图标按钮的分割按钮具有相同的辅助功能名称。
- 整个店面的图像删除和移动图标按钮的对比度已得到改进,以提高弱视用户的可读性。
- 向商户编辑搜索引擎优化折叠面板的输入时显示的铅笔图标添加了替换文本。
- 为用于在整个产品界面中执行搜索的放大镜图标指定了可访问的名称和替换文本。
- 产品页面 新视图 文本输入字段现在具有可访问的名称。
- 此项目具有权重,在 目录 > 产品 详细信息页面上选择输入,现在具有可见的标签和可访问的名称。
AdminGWS
- 权限受限的管理员现在可以按预期创建返回。
后端
- 管理员现在可以在配置了自定义管理员路径且启用了密钥的部署中登录到管理员。 以前,Adobe Commerce显示此错误:
Invalid security or form key. Please refresh the page
。
- 当多商店层次结构发生更改时,Adobe Commerce不再重定向到所有商店视图范围。 以前,在保存层级后,购物者会被重定向到不正确的商店URL,并在多商店部署中选择了所有商店查看范围。
捆绑产品
- 购物者现在可以为其购物车添加捆绑产品(具有固定产品税和两个选项)。 以前,Adobe Commerce未添加产品并显示此错误:
We can't add this item to your shopping cart right now
。
- 已将
data-validate
和min
属性形式的表单验证添加到购物车数量字段,以防止捆绑产品出现负值。
- 现在,当在商店视图级别上禁用子产品时,
products
查询会正确筛选捆绑产品。 以前,查询会返回在商店视图级别禁用的子产品。
cron
现在在indexer_update_all_views
执行期间按预期清除了产品类别缓存。 以前,在对类别中的许多产品进行批量更新后,Adobe Commerce会在类别页面上显示不正确的产品计数。
- 当捆绑产品重新上架时,Adobe Commerce现在会按预期更新类别产品缓存。
- 已优化重新索引期间运行的缓存清理算法。 现在,在重新索引期间缓存类别时,捆绑产品会按预期显示。 以前,在重新索引期间缓存产品类别后,捆绑产品会持续数小时不显示。
- 在使用不同货币的多商店部署中,为捆绑产品购买提供的电子邮件确认现在可按预期进行货币转换。 GitHub-33426
- 现在,可以在产品网格中正确显示带有%前缀的捆绑产品的高级定价特价折扣。 以前,产品网格中带有$前缀的%折扣显示不正确,而不是%。
- 现在,当相关产品更改其状态时,管理员中的捆绑包产品状态会自动更新。
- 捆绑产品的GraphQL解析程序现在会检查是否已禁用子捆绑产品。 以前,不会进行此检查,并且诸如
categoryList
之类的查询返回了不可销售的子产品。
cart
查询响应现在为具有动态价格的捆绑产品返回准确折扣。 以前,查询响应包括分别应用于每个捆绑产品的折扣。
缓存
- 在一般使用情况下,页面缓存不再快速增长。 GitHub-9458
- 下订单不再导致从清漆缓存中删除与已订购产品相关的所有缓存标记。 GitHub-30128
- 当您从顶级类别更新产品或者运行索引以更新产品属性或库存状态时,全站点页面缓存不再消失。 以前,清漆缓存将顶部菜单类别ID添加到所有页面缓存标记。 GitHub-33465
购物车和结账
- 最低广告价格 这是什么?购物车页面上的 链接现在可点击,并按预期打开信息弹出窗口。 以前,单击此链接不起作用。
- 在启用了永久购物车的部署中,购物者现在可以在会话超时后下单而不会出现错误。 以前,Adobe Commerce在会话超时后显示付款错误。
- 为客户地址属性分配较高的排序顺序值不会再导致结账页面上的性能下降。
- 如果更新数量无效,Adobe Commerce现在会将购物车产品数量还原为之前的值。
- 现在,单击“最近查看的项目”部分中的 添加到购物车 按钮,可按预期重定向到产品详细信息页面。 以前,购物者会被重定向到产品列表页面。
- 来宾购物者现在可以使用包含多种自定义客户地址属性的客户地址成功结帐。 以前,在签出期间显示自定义属性的值时,其格式不正确。 GitHub-30290
- 现在,在启用表费率的情况下,Adobe Commerce可以将免费配送阈值正确应用于订单。 GitHub-21832
- 您现在可以使用
POST /V1/guest-carts/:cartId/items
将具有不同选项的简单产品添加到购物车。 以前,此调用会更改您添加的第一个简单产品的数量,而不是添加具有指定选项的第二个简单产品。 GitHub-32302
- 现在,在为
Poland
国家/地区和PLN
货币配置部署时,结账页面的“订单摘要”部分会显示正确的货币和金额。 以前,购物车和结帐页面显示的金额为 PLN 0。
- 当购物者在更改迷你购物车中的产品数量后单击 更新购物车 时,Adobe Commerce不再引发错误。 以前,Adobe Commerce显示此错误:
The quote item isn't found. Verify the item and try again
。
- 针对特定商店中可配置产品的GraphQL
products
查询现在仅返回指定商店中的产品价格范围。 以前,请求会返回非指定商店中简单产品的价格范围。
- 当购物者添加的帐单地址缺少街道字段
Uncaught TypeError: Unable to process binding "text: function(){return currentBillingAddress().street.join(', ') }"
时,Adobe Commerce不再引发此错误。 GitHub-33826
- 在从已删除mini cart的商店中结帐时,Adobe Commerce不再引发控制台错误。 GitHub-34513
- 当帐单地址缺少街道字段值或街道字段值不是数组时,在付款阶段签出不再失败。 以前,签出失败,出现此错误:
Uncaught TypeError: Unable to process binding "text: function(){return currentBillingAddress().street.join(', ') }"
。 GitHub-33826
- 现在,可在优惠券报表网格中正确计算销售总额。 以前,销售总额不包括运费。
- 现在,当购物者在配送方式之间切换时,可以正确计算整个购物车折扣。
- 管理员创建订单页面上 状态 字段的下拉列表现在由所选国家/地区的预定义值填充。 以前,此字段是输入文本字段而不是下拉菜单。
- 在您使用
addConfigurableProductsToCart
突变在更改商店视图后直接将可配置产品添加到购物车后,Adobe Commerce不再引发错误。
- 当您使用
addConfigurableProductsToCart
突变将可配置产品的已禁用子项添加到购物车时,Adobe Commerce不再引发错误。 以前,Adobe Commerce引发完整性约束违规错误。
- 禁用 在购物车中显示交叉销售项目 配置设置时,交叉销售产品在购物车页面上不再可见。
- 如果优惠券应用顺序失败,则优惠券使用值不再更改。 以前,在购物车中应用优惠券后,一次性自动生成的优惠券被标记为无效,但未下订单。
- 验证已添加到结账工作流中,以将客户的街道地址与默认值进行比较。 如果验证过程标识了更改,它将将
customer_address_id
设置为null
以将其视为新的客户地址。 以前,如果客户在结账时未验证即保存了地址,并且在将验证应用于结账字段后同一客户尝试使用同一地址下订单,则Adobe Commerce不接受编辑后的地址并引发异常。
购物车价格规则
- 现在,在启用
auto
选项的情况下保存相关购物车价格规则之前,禁止生成优惠券。 如果您尝试在不启用auto
选项的情况下保存此规则,Adobe Commerce会显示以下消息:Rule is not saved with auto generate option enabled. Please save the rule and try again
。
- 添加了用于确认购物车价格规则折扣正确应用的测试。
- 使用带有 的SKU条件的购物车价格规则如果在购物车中找到/未找到项目,并且所有条件/任何条件true,则对可配置产品而言,其现在可按预期工作。
- 现在,购物车价格规则正确应用于固定价格的捆绑产品。 以前,当至少有一个子产品具有在规则条件中指定的相同属性集时,购物车价格规则不适用于这些产品。
- 现在,如果为Adobe Commerce配置了 整个购物车的固定金额折扣 购物车价格规则,则价格为0的产品可以成功添加到购物车中。 以前,Adobe Commerce显示以下错误:
report.ERROR: Warning: Division by zero in /home/mer33515/public_html/ee24develop/app/code/Magento/SalesRule/Helper/CartFixedDiscount.php on line 85
。
- 更正了在激活具有固定金额折扣的购物车规则时,
cart
查询返回的折扣金额不准确的情况。
目录
- 当产品具有
datetime
属性时,在产品网格上执行批量属性更新操作时,Adobe Commerce不再引发异常。
- GraphQL查询现在会根据子产品的可见性筛选器设置返回可配置产品的子产品的结果。
- 当可配置的产品属性发生更改时,Adobe Commerce不再修改相关的产品价格。 以前,可配置产品的最低广告价格(MAP)会覆盖店面相关产品的价格。
- 管理员现在可以重新分配类别中剩余的最后一个产品并保存空类别。
- 管理员产品网格和过滤器的下拉/多选属性值现在按预期从管理员设置中派生。 以前,属性值派生自默认存储设置。
- GraphQL类别查询会按预期返回有关暂存类别更改的信息。
- 现在,当产品同时分配给父类别及其子类别,但位于每个类别的不同位置时,产品列表会在管理员中准确呈现。 以前,产品列表渲染失败,出现此错误:
Item (Magento\Catalog\Model\Product\Interceptor) with the same ID "<ID>" already exists
。 GitHub-33145
- 现在可将具有许多选项(超过150个)的多选属性分配给新产品。 以前,属性选项保存在
catalog_product_entity_varchar
表中,在管理员中重新打开产品时,并非所有选项都存在。 GitHub-33486
- 添加了在路由器无法实例化从URL收集的操作类时的验证。 Adobe Commerce现在显示标准错误消息。 以前,Adobe Commerce显示此错误:
PHP Error: Cannot instantiate abstract class Magento\Catalog\Controller\Product\Compare
。
- 当两个购物车规则应用于满足以下条件的订单时,Adobe Commerce现在可以正确计算折扣:一个购物车规则应用了优惠券代码和 整个购物车的固定价格 条件,而第二个购物车价格规则没有优惠券和 产品价格折扣百分比 条件。 以前,当之前的购物车规则已对某些产品应用折扣时,相关算法无法在购物车产品之间正确按比例分摊折扣。
- 将许多产品(大约10,000个)分配给某个类别不会再导致浏览器崩溃。
- 现在,无论是从管理员保存还是从导入保存,图像属性都一致地保存在数据库中。 以前,图像替换文本值的保存方式不一致。 如果映像存在,且标签设置为null,则不会在数据库中重置标签值。
- 已优化目录小组件SQL查询。 以前,大型MySQL查询会降低页面加载速度,并导致MySQL中断。
- 价格筛选器现在可正确用于库存外的可配置产品。 以前,缺货的可配置产品未显示在其正确的价格范围内。
- 在部分索引过程中,更新子产品不再删除从其父可配置产品继承的目录规则折扣。 以前,当我们向某个类别分配了可配置产品,但没有为其关联的简单产品分配类别,然后使用该类别创建目录规则时,Adobe Commerce删除了在部分索引过程中分配给简单产品的目录规则。
- 在添加产品选项时,分组和可配置产品的网格视图列表现在仅包含简单和虚拟产品。 以前,该应用程序包含带有选项的简单产品。
目录规则
- 每日更新目录规则不再导致性能下降。 以前,部分目录产品价格索引不会删除旧价格或日期。
- 在部分重新索引期间,Adobe Commerce不再删除可配置产品的目录价格规则。 以前,在可配置产品重新编制索引时,只对子产品重新编制索引。
- 具有 类别的目录价格规则不是category_id 条件,现在适用于不属于任何类别的产品。
可配置的产品
- 现在,可配置的产品选项标签名称基于在管理员订单创建期间选定的商店视图。 以前,Adobe Commerce使用默认商店视图中的标签名称。
- 启用用于显示缺货产品的全局标志后,产品列表现在可正确包含缺货产品的子产品。 以前,如果在启用此标志时多个子产品选项之一库存不足,则产品列表不包含该子产品。
- 您现在可以使用
addConfigurableProductsToCart
变异,在非默认商店视图上将可配置产品添加到购物车中。 以前,当网站ID和商店ID不同时,您无法将可配置产品添加到购物车。 GitHub-30948
- GraphQL
products
查询不再返回有关可配置产品的已禁用子产品的数据。
- 为可配置产品创建新配置不再覆盖现有配置中的更改。 以前,在生成新变体后,现有变体的状态被默认状态
enabled
覆盖。
- 尝试将可配置产品的已禁用子级添加到购物车时,Adobe Commerce不再引发内部错误。
客户
- Adobe Commerce现在在创建订单期间会考虑管理员区域设置的网站范围。 以前,订单详细信息(如客户地址属性)仅在一个网站上在多站点部署中正常工作。 GitHub-23254
客户细分
- 现在,在创建公司帐户时,新客户区段的“匹配的客户”计数会自动更新。 以前,必须刷新区段数据才能获得准确计数。
电子邮件
- 当客户尝试使用无效的电子邮件帐户登录时,签出登录弹出窗口中的电子邮件字段验证错误现在与客户登录页面上的电子邮件验证错误匹配。
- 当从管理员添加装运注释并激活 通知客户 复选框时,Adobe Commerce不再在装运详细信息电子邮件中包含错误消息。 以前,送货确认电子邮件包含此消息:
We're sorry, an error has occurred while generating this content
。
- 现在,可在电子邮件模板中正确转换地区和国家/地区ID值。 以前,当您从管理员电子邮件模板单击 预览链接 时,无法正确显示国家/地区和区域名称。
- 管理员为非默认商店视图发送的销售更新电子邮件现在包含正确的订单状态标签。 以前,这些电子邮件始终显示默认存储中的状态。 GitHub-29263
- Adobe Commerce现在按预期在电子邮件中包含
Content-Disposition: inline
标头。 GitHub-29258
- 在使用Microsoft Outlook和MS Exchange Server的部署中,订单和发货通知电子邮件现在可按预期工作。 以前,电子邮件正文为空,但包含一个ATT*标记的附件。 GitHub-25076
- 现在,订单电子邮件包含使用购物者的区域设置进行本地化的数据(如预期)。 以前,排序电子邮件使用管理员区域设置。
- 单击任何电子邮件模板的预览现在会按预期在单独的窗口中打开模板预览。 以前,Adobe Commerce会同时从“电子邮件模板”网格和弹出窗口中打开模板预览。
- 现在,从非默认网站发送的异步订单电子邮件包含相应网站的徽标URL。 以前,这些电子邮件始终包含默认网站或主网站的徽标。 (具有
storeCode
值的默认键已分配给传递给UrlInterface
getUrl
函数的第二个数组参数。 此值区分不同商店/网站的URL,并为发送给客户的电子邮件内容生成正确的baseUrl
。)
框架
- 现在,通过将数字转换为字符串并比较字符串,可以实现数字与非数字字符串之间的非严格比较。 数字字符串与数字字符串之间的比较仍保持与以前相同的效果。 这意味着
0 == "not-a-number"
现在被视为false。 GitHub-33780
- 辅助函数
Magento\Payment\Helper\Data
不再在构造函数中创建新布局。 以前,当在自定义命令中使用此帮助程序但未指定区号时,Adobe Commerce会引发错误。 GitHub-33908
- 更新了
allure-framework/allure-php-api
编辑器依赖项。
- 现在,当bootstrap文件中发生异常时,Adobe Commerce会返回500响应代码。 以前,Adobe Commerce返回200 OK状态代码。 GitHub-22196
- 现在,货币符号已按预期在店面产品详细信息页面上加载。 以前,重新加载JavaScript页面后,此符号有时会消失。
- 更新
symfony/console
在运行bin/magento setup:di:compile
时不再导致失败。 GitHub-33595
- 新的必需选项已添加到随Adobe Commerce分发的
.htaccess
和nginx.conf
文件中,以支持PHP 8.x。 过时的选项也已删除。 GitHub-34358
- 商家现在可以上传多个产品的视频。 现在,仅当上传的文件名包含扩展名时,文件生成过程才会为文件名附加扩展名。 以前,当商家尝试上传并为两个不同的产品保存相同的视频时,Adobe Commerce引发此错误:
Notice: Undefined index: extension in /app/7ha7zds7wvqys_stg/vendor/magento/framework/File/Uploader.php on line 699
。 出现此情况是因为Adobe Commerce尝试将文件扩展名附加到名称,而不管上传的文件名是否具有扩展名。
- 更正了
sprintf(__())
和sprintf(Magento\Framework\Phrase())
构造的问题,以便在整个代码库中与PHP 8.x兼容。 以前,Adobe Commerce抛出此类错误:Expected parameter of type 'string', 'Magento\Framework\Phrase' provided
。 GitHub-34085
- 改进了高级搜索查询参数的验证。 GitHub-33589
- 执行
bin/magento support:backup:code
现在会按预期创建备份。 以前,Adobe Commerce会创建一个备份,但会引发错误。
- 已成功执行的
cron
进程现在被分配了success
状态。 以前,同一cron
进程可以运行两次,因为成功的cron
进程被分配了pending
状态。
staging_synchronize_entities_period
cron
作业现在按预期工作。 以前,已成功应用第一个暂存更新,但Adobe Commerce在后续更新中抛出此错误:report.ERROR: Cron Job staging_synchronize_entities_period has an error: The active update can't be deleted
。
Magento_Logging
模块现在支持IPv6。
常规修复
- 复制产品时,Adobe Commerce现在会根据其定义的范围复制所有产品字段。 以前,name 和 description 字段已重置为
global
范围。
- 当产品价格为0时,Adobe Commerce不再对折扣应用增量四舍五入。 以前,Adobe Commerce计算负折扣金额。
- 现在可以成功保存具有 设置为新 属性、且分配了空开始日期和过期结束日期的产品。 以前,当您使用以下设置保存产品时,Adobe Commerce会引发此错误:
Make sure the To Date is later than or the same as the From Date
。
- 当您更改其SEO URL标识符时,Adobe Commerce不再复制CMS层级中的现有CMS页面。 以前,Adobe Commerce在CMS层次结构中创建一个新节点,以复制现有节点。
- 管理员现在可以重试已超过最长处理时间的操作。 默认最长为12小时。
- 由于未确认使用者的消息,批量操作处理期间不再发生管道断裂错误。 现在,预取计数属性可为使用者限制这些消息并避免错误。 以前,运行
bin/magento queue:consumers:start async.operations.all
生成此错误:Broken pipe or closed connection
。
- 现在,在第二次登录尝试失败后,购物者会按预期重新定向回登录页面。 以前,在第二次尝试登录失败后,购物者会被重定向到404页面。 GitHub-32885
- 已延长密码重置令牌的有效期,以避免在提交密码更改页面期间出现争用情况。 GitHub-29647
- 现在会遵循分配给新集成的权限。 GitHub-33347
- 更正了影响“联系我们”表单的例外日志中留言的回归问题。 GitHub-34483
- 解决了JavaScript加载客户数据的多个问题。 GitHub-30498
- 在扩展中使用
QuoteIdToMaskedQuoteId
不再显着增加响应时间。 GitHub-33676
magento2/app/code/Magento/Bundle/Pricing/Price/ConfiguredPrice.php
中的类BundleDiscountPrice
现在已声明为预期类。 以前,Adobe Commerce引发此错误:Class Magento\Bundle\Pricing\Price\BundleDiscountPrice not found
。 GitHub-33334
- AWS S3适配器写入的转义CSV字段值现在与其他文件系统适配器写入的数据匹配。
- 现在支持与S3兼容的存储。 GitHub-32114
- 从一台设备注销不再自动从其他设备注销购物者。
- 当禁用 使用父节点层次结构 配置设置时,当您从商店视图级别的内联网格中编辑某个CMS页面时,Adobe Commerce现在会成功保存该页面。 以前,Adobe Commerce显示此错误并且没有保存您的CMS页面编辑:
A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later
。
- 现在,可以正确显示包含同一页面的节点的痕迹导航。 以前,Adobe Commerce为属于多个节点的页面显示相同的节点名称。 即使每个页面存在多个节点,Adobe Commerce也只检索页面的第一个节点。
- URL重写内联编辑事件现在记录在报表中。
- 如果没有新消息,则不会重置
mage-messages
Cookie。
礼品卡
- 在购物者输入无效的礼品卡时添加了信息性更强的错误消息。
GraphQL
generateCustomerToken
和revokeCustomerToken
突变现在为用户状态提供了正确的缓存ID。 以前,这些突变使用无效的x-magento-cache-id
,这会降低性能。
setBillingAddressToCart
突变现在正确使用same_as_shipping
参数来设置帐单地址,以与预期的送货地址匹配。 以前,Adobe Commerce显示此错误:The shipping method is missing. Select the shipping method and try again
。 GitHub-30924
- GraphQL购物车操作现在仅在查询请求时才计算购物车总计。 以前,购物车操作始终会计算总计,这是一项资源密集型操作。
addProductsToCart
变异现在仅将分配给标题中定义的商店的产品添加到购物车中。
- 使用分层导航筛选器的
products
查询现在返回正确的子类别列表。 GitHub-33387
- 返回
ConfigurableCartItem
对象的查询和突变包含按预期配置变体的信息。
products
查询现在返回配置产品选项值和变体属性值。 以前,查询响应中的这些值为空。
- 现在,当在商店视图级别上禁用子产品时,
products
查询会正确筛选捆绑产品。 以前,查询会返回在商店视图级别禁用的子产品。
- GraphQL现在为New Relic提供描述性交易名称,这对于调试很有帮助。 GitHub-30915
- 当 Show Telephone 管理员配置设置设为可选时,
setShippingAddressesOnCart
突变现在支持在电话号码值为空的购物车上设置送货地址。 以前,Adobe Commerce引发此错误:Field CartAddressInput.telephone of required type String! was not provided
。
- 更正了
addSimpleProductsToCart
突变允许您向购物车添加未分配到目标网站简单产品的问题。
- 已针对使用搜索参数优化搜索结果的GraphQL
products
查询优化了MySQL查询。
- 如果产品未包含在请求的范围中,则
addConfigurableProductToCart
突变不再支持将产品添加到购物车。
products
查询现在仅返回分配给所请求的storeview的可配置变型。 以前,会返回所请求的可配置产品的所有变体。
addSimpleProductsToCart
个请求现在可以成功并行运行。 以前,对同一SKU的多个请求为同一购物车ID创建了重复的行项目,而不是按预期增加产品数量。
addProductsToCompareList
变异现在可用于比较可配置产品的变体。
- 当从后端更新层级产品的价格时,新价格会在客户的购物车上正确更新。 以前,虽然购物车摘要部分中的小计已正确更新,但行小计未更新。
- 当用于添加具有多个选择选项的捆绑产品时,
addProductsToCart
突变现在会将所有选定选项添加到购物车。 以前,该突变仅添加最后的选择。 GitHub-33123
- 当可选电话字段的值设置为空字符串时,GraphQL查询现在会按预期返回账单地址。 以前,查询返回null地址值。 GitHub-30218
- 当多个产品具有相同的相关性或价格值时,
products
查询响应现在会根据指定的排序顺序列出产品。
- 并发
addSimpleProductsToCart
和addProductsToCart
请求不再导致重复报价项目。
products
查询分层导航筛选器现在返回正确的子类别列表。 现在,在请求中提供includeDirectChildrenOnly
标志时,只包含直接子类别。 以前,当产品被分配给多个类别时,所有类别都会包含在聚合部分的响应中。
- 为GraphQL搜索查询添加了搜索建议功能。
OrderAddress.telephone
字段现在在customer
查询或返回或修改客户订单地址的其他查询和突变中是可选的。
- 现在,当通过API更改组ID时,可以为店面和管理员中指定组中的客户正确更新价格。 以前,当通过API更改组ID时,这些价格未正确更新。
图像
- 带有透明背景的水印图像在叠加的透明产品图像上不再具有白色背景。 以前,当水印图像和产品图像都具有透明背景时,水印图像会显示为白色背景。
- 启用AWS S3后,现在会按预期上传和显示发票和装运收据的徽标。
- 在管理员设置为与存储URL不同的域的部署中,与添加到CMS页面的图像关联的媒体标记现在包含预期的存储URL。 以前,媒体标记包含静态管理员URL,而不是预期的存储URL。 GitHub-32930
- 在店面同时加载图像时刷新图像缓存时,Adobe Commerce不再引发错误。
导入/导出
- 当文件名相似但只有一两个字符不同时,
bin/magento remote-storage:sync
不再失败。 以前,第一个映像已正确存储,但第二个名称类似的映像触发了同步失败并出现以下错误:Notice: Undefined index: media/catalog/product/5/_ in /src/vendor/magento/module-remote-storage/Driver/Adapter/Cache/Generic.php on line 197
。 GitHub-34337
- Adobe Commerce现在可以在计划导出后将导出文件名中的时间戳转换为用户的时区。 以前,不会转换这些值,因此Adobe Commerce会显示UTC时间戳。
- 多次导入同一CSV文件时,Adobe Commerce不再在远程存储中创建重复的图像。
- 导入不再失败,并显示以下消息:
Import failed: Area code not set: Area code must be set before starting a session
。 GitHub-16171
- 运行
bin/magento app:config:dump
并手动编辑config.php
后,您现在可以成功导入。 GitHub-31428
- 现在,可在自定义多选属性中使用非默认的多值分隔符。 以前,在导入期间验证失败。 GitHub-23156
- 现在,在从CSV导入期间,可以正确分配类别中的产品位置。
索引
- 现在,Adobe Commerce在重新编制索引后,可按预期在店面显示产品。 先前,当前500个重新编制索引的产品有库存,后500个产品无库存,店面没有显示任何其他产品。
- 解决了合并
indexer.xml
文件的一致性问题。 现在,classType
中允许的值在未合并和合并的indexer.xml
文件中是相同的。 GitHub-29609
- 在类别索引器中实施了同步机制,以防止完全索引器和部分索引器并行运行。 以前,当这些索引器并行运行时,店面类别页面中可能会暂时忽略产品,或者类别页面中可能会暂时空产品。
基础架构
- 不支持的
str_contains
方法已替换为支持的函数。 这是Adobe Commerce 2.4.3的一个已知问题。GitHub-33680
-
已重构代码库以更正关键字
match
的使用,该关键字是PHP 8.x中的保留关键字。GitHub-33626 -
HTML标签现在正确嵌套和关闭,以符合JQuery 3.5.x中对包括自定义元素在内的非空白元素的标准。
- 修复了
abs()
和round()
函数以与PHP7.x和PHP8.x兼容。 GitHub-34322
- 运行
bin/magento setup:di:compile
时,更新symfony/console
不再导致失败。 GitHub-33595
- 更正了
colinmollenhour/cache-backend-redis
编辑器依赖项的限制。 GitHub-34177
- 代码库已重构,删除对
phpunit/phpunit
的已弃用方法的调用。 GitHub-33916
- 当具有只读
pubs/media
的管理员尝试访问包含图像的产品的产品详细信息页面时,Adobe Commerce现在显示信息性错误。 以前,Adobe Commerce引发PHP错误。 GitHub-32819
- 所有成员级
@api
注释已在整个代码库中移到其类中。
gift-card Cms
构件数据已从Magento/WidgetSampleData
(Magento Open Source)移动到Magento/GiftCardSampleData
(Adobe Commerce)。 这解决了在PHP8.1上使用示例数据安装(Magento Open Source)的问题。
- 在整个Adobe Stock集成代码库中标记了接口,并根据需要使用
@api
。 GitHub-32875
- 在使用模拟的预准备语句时,结果集中的整数和浮点数现在使用本机PHP类型而不是字符串返回。 GitHub-34625
- 已禁用从false值自动创建数组的功能,以确保与PHP 8.1兼容。
- 辅助函数
Magento\Payment\Helper\Data
不再在构造函数中创建新布局。 以前,当在自定义命令中使用此帮助程序但未指定区号时,Adobe Commerce会引发错误。 GitHub-33908
- 您现在可以由
di.xml
将data
参数传递给块实例构造函数。
- 已优化
Generator.php
以提高可读性。 GitHub-33809
- 改进了
JwsManager
类中的JWK检查,以处理在标头中直接设置算法的情况。 以前,此检查会忽略此有效方案。 GitHub-32636
针对PHP 8.1兼容性的升级
-
PHP 8.1中已弃用的函数已从代码库中移除。 GitHub-34497
-
为与PHP 8.1兼容,向返回类型不完整的内部方法添加了返回类型声明。GitHub-34498
-
已将每个模块的根
composer.json
中继包和composer.json
文件更新为PHP 8.1。GitHub-34009 -
第三方
jquery.tabs
库(最新版本) -
NPM包(最新版本)GitHub-33512,GitHub-33972
-
jquery.cookie
第三方库(最新版本) GitHub-34427
编辑器依赖项更新
-
所有编辑器依赖项都已更新为与PHP 8.1兼容的版本。
-
PHPUnit已升级到最新版本(9.5.x)。 已更新测试和测试框架,以便与新版本兼容。
JavaScript依赖项更新
jquery-validate
第三方库GitHub-33853
Less.js
(v3.13.1) GitHub-32845
库移除和弃用
-
以下库已被删除,因为Adobe Commerce 2.4.x支持的所有浏览器均已内置对此功能的支持:
es6-collections.js
MutationObserver.js
Modernizr
FormData.js
-
已删除未使用的
jquery.hoverIntent
JavaScript库。 GitHub-33732 -
lib/internal/Magento/Framework/Filter/Money.php
已弃用。 它包含在PHP 8.x中删除的money_format()
函数。GitHub-33870 -
删除已弃用、不支持的
grunt-autoprefixer
包。 GitHub-34037
库升级
-
以下库已升级到更新版本:
script.aculo.us
Chart.js
moment.js
moment-timezone-with-data.js
matchMedia.js
underscore.js
PrototypeJS
RequireJS
LessCSS
发票
- 为自动递增的发票ID删除了使用字符串作为前缀的强制转换
int
。 因此,对于带有字符串前缀的数字,发票现在显示0。 GitHub-34451
记录
- Adobe Commerce不再为在 系统 > 批量操作 中执行批量操作的失败API调用创建日志条目。 以前,失败的API调用的永久条目会添加到批量操作日志中。
- 不再允许从false值自动创建数组。 GitHub-34499,GitHub-34589
Adobe Commerce编码标准
- 已将
phpunit/ phpunit
更新到magento-coding-standard
存储库的最新版本。 GitHub-33622
- 已在Adobe Commerce编码标准存储库中将
webonyx/graphql-php
依赖关系更新为版本^14.9。 GitHub-32863
- 向Adobe Commerce编码标准中添加了新的sniff
Magento2.PHP.ArrayAutovivification
,以标识从false值自动创建数组。 GitHub-34509
- 向Adobe Commerce编码标准添加了新的sniff
Magento2.Functions.DeprecatedFunction
。 GitHub-34547
- 在Adobe Commerce编码标准中添加了已弃用的函数以探查
Magento2.Functions.DiscouragedFunction
。 GitHub-34548
Magento2.Annotation.MethodAnnotationStructure
探查不再因误报而失败。 GitHub-34679
媒体集
- 在启用了AWS S3的部署中,
bin/magento media-gallery:sync
命令不再失败。
- 现在,当菜单项超过11且启用了 启用旧媒体集 配置设置时,会显示新添加的媒体集内容子菜单标题。 GitHub-33889
- 编辑包含许多图像的产品时,媒体库选项卡的加载时间得到了改进。 GitHub-33434
MFTF
-
CURLOPT_POSTFIELDS
不再接受对象作为数组。 要将对象解释为数组,请执行显式(array
)转换。 此做法也适用于接受阵列的其他选项。 GitHub-33781 -
curl_init()
现在返回CurlHandle
对象而不是资源。curl_close()
函数不再有效。 相反,如果CurlHandle
实例不再被引用,则会自动销毁该实例。 GitHub-33781
- 修复了可下载产品的MFTF测试中的错误。 GitHub-34270
- 已从
CatalogSearch
、GroupedProduct
、Newsletter
、Paypal
、Quote
和Review
模块中删除CliCacheFlushActionGroup
。 GitHub-33531
- 现在,通过将数字转换为字符串并比较字符串,可以实现数字与非数字字符串之间的非严格比较。 数字字符串与数字字符串之间的比较仍保持与以前相同的效果。 这意味着0 == “not-a-number”现在被视为错误。 GitHub-33780
parse_url()
现在可以区分不存在查询和空查询及片段。 GitHub-33782
- 更新了代码库,以避免在使用
ReflectionType::isBuiltin()
方法时出现严重错误。 GitHub-34194
新建操作组
AdminCheckOrderStatusInGridActionGroup
GitHub-33747
StorefrontSelectFirstShippingMethodActionGroup
GitHub-33773
AdminClickUpdateChangesOnCreateOrderPageActionGroup
GitHub-33689
操作组
在以下测试中,重复性操作已替换为操作组:
AdminAddInStockProductToTheCartTest
GitHub-34512
AdminAddBundleItemsTest
GitHub-34312
AdminConfigurableProductAddConfigurationTest
GitHub-34511
AdminConfigurableProductBulkUpdateTest
GitHub-34435
AdminConfigurableProductDisableAnOptionTest
GitHub-34511
AdminConfigurableProductOutOfStockAndDeleteCombinationTest
GitHub-34316
AdminConfigurableProductOutOfStockTestDeleteChildrenTest
GitHub-34316
AdminConfigurableProductRemoveAnOptionTest
GitHub-34511
AdminConfigurableProductRemoveConfigurationTest
GitHub-34511
AdminCreateAndEditSimpleProductSettingsTest
GitHub-34435
AdminCreateAndEditVirtualProductSettingsTest
GitHub-34435
AdminCreateInactiveFlatCategoryTest
GitHub-34490
AdminCreateInactiveInMenuFlatCategoryTest
GitHub-34510
AdminCreateDuplicateCategoryTest
GitHub-34414
AdminCreateDuplicateProductTest
GitHub-34414
AdminDeleteSimpleProductTest
GitHub-33783
AdminEditRelatedBundleProductTest
GitHub-34313
AdminMassDeleteBundleProductsTest
GitHub-34313
AdminNavigateMultipleUpSellProductsTest
GitHub-34314
AdminSimpleProductSetEditContentTest
GitHub-34435
AdminSimpleProductTypeSwitchingToConfigurableProductTest
GitHub-33788
AdminConfigurableProductTypeSwitchingToVirtualProductTest
GitHub-33788
AdminCreateConfigurableProductWithDisabledChildrenProductsTest
GitHub-33775
AdminUpdateFlatCategoryAndAddProductsTest
GitHub-34490
AdminUpdateTopCategoryUrlWithNoRedirectTest
GitHub-33774
AdminUpdateTopCategoryUrlWithRedirectTest
GitHub-33774
CatalogProductListWidgetOperatorsTest
GitHub-34579
CreateProductAttributeEntityWithReservedKeysTest
GitHub-34422
EnableDisableBundleProductStatusTest
GitHub-34313
StorefrontCheckRefundGrandTotalActionGroup
GitHub-34315
StorefrontInactiveCatalogRuleTest
GitHub-33556
StorefrontConfigurableProductCantAddToCartTest
GitHub-33786
StorefrontConfigurableProductOptionsTest
GitHub-33785
StorefrontConfigurableProductCanAddToCartTest
GitHub-33784
StorefrontConfigurableProductGridViewTest
GitHub-34311
StorefrontConfigurableProductListViewTest
GitHub-34311
StorefrontProductNameWithHTMLEntitiesTest
GitHub-33806
StorefrontProductNameWithDoubleQuoteTest
GitHub-32991
新测试
AdminCreateOrderWithCheckedAppendCommentCheckboxTest
GitHub-32381
CheckoutWithEnabledCaptchaTest
GitHub-32991
StorefrontAddProductWithBackordersAllowedOnProductLevelToCartTest
GitHub-33635
StorefrontGiftMessageForOrderOnCheckoutCartPageTest
GitHub-32821
StorefrontCaptchaCheckoutWithEnabledCaptchaTest
GitHub-32821
StorefrontCheckoutWithEnabledMinimumOrderAmountOptionTest
GitHub-33460
重构的测试
CaptchaWithDisabledGuestCheckoutTest
GitHub-30828
新闻稿
- 具有适当权限的用户现在可以按预期管理客户新闻稿订阅。 以前,只有具有完全权限的管理员才能在管理客户帐户页面上管理客户新闻稿订阅。
订购
- 购物者现在可以成功重新订购包含产品的现有订单,该订单具有店面和管理员中类型文件和类型下拉列表的自定义选项组合。 以前,Adobe Commerce会引发错误,并且不会处理重新排序。
- 现在,通过商店贷记支付且应用了固定产品税(FPT)的订单发票包含正确的总计。
- 管理员订单详细信息页面现在会按预期加载。 以前,Adobe Commerce在加载含特定税订单的订单详细信息页面时抛出以下错误:
Call to a member function getId() on array
。
- 具有包括订单和送货权限的受限制权限的管理员,现在可以按预期查看订单页面。 以前,当具有这些权限的管理员尝试查看订单时,Adobe Commerce会引发错误。 GitHub-14633
- 现在,当设置了允许的最大数量限制时,购物者可以下单包括子可配置产品。
支付方式
- 购物者现在可以使用Braintree通过账单地址下订单,而无需在启用了3DS的部署中设置区域。 以前,当购物者单击 下订单 时,结帐会冻结,无法完成购买。 GitHub-34204
- 现在支持Venmo支付选项。
- PayPal现在可以通过BN代码进行跟踪。
- 从Adobe Commerce 2.4.2-p1升级时,
bin/magento setup:upgrade
现在可按预期运行。 以前,Adobe Commerce引发此错误:Unable to apply data patch Magento\Paypal\Setup\Patch\Data\UpdateBmltoPayLater for module Magento_Paypal
。 GitHub-33678
- 现在,在管理员下订单期间,可使用正确的商店ID检索保存的信用卡。 现在,根据网站范围配置设置,在订购过程中会显示存储的信用卡。 以前,当管理员尝试从管理员为客户创建订单并选择存储信用卡方法时,存储卡没有选项。
- 已解决PayPal信用卡金额显示异常的问题。 以前,启用PayPal信用并配置多个礼品卡金额时,如果购物者更改了礼品卡价值的金额,店面不会更新分期付款的金额。 这是Adobe Commerce 2.4.3中的一个已知问题。
PayPal
- 使用PayPal Express付款方式结账时,Adobe Commerce不再显示错误。 以前,尽管结帐过程已完成,但Adobe Commerce会显示此错误:
Something went wrong
。
- PayPal Express现在可从购物车中按预期工作。 以前,当您单击 PayPal 按钮以从购物车开始快速结帐时,Adobe Commerce引发此错误:
To check out, please sign in with your email address
。 GitHub-33445
- PayPal Payflow Pro现在在部署中使用正确的父交易ID执行延迟捕获,其中具有 付款操作 的PayPal Payflow Pro网关设置为 授权。 将 Sale 交易发送到Payflow,该交易具有在签出时创建的保险库令牌的父交易ID。 以前,已创建 延迟捕获 事务并发送到PayPal Payflow。 GitHub-33445
- 使用PayPal Payments Advanced付款完成付款后,购物者现在会按预期跳转到成功页面。 以前,即使成功处理付款并且没有记录错误,购物者也不会重定向到此页面。
性能
- 已向
magento_giftcardaccount.code
添加索引以提高性能。
- 模块列表加载执行时间已缩短。
- 热门搜索词缓存的性能已得到改进。 以前,
search_query
表越大,完成搜索查询所需的时间就越长。 GitHub-27559
- 默认情况下,Adobe Commerce会在产品保存期间同步调整图像大小。 商家现在可以通过对
di.xml
文件进行细微编辑来作为后台异步流程调整图像大小。
- 在多存储部署中,类别产品索引器的性能得到了改进。 GitHub-33984
- 用于
glob()
系统调用的新内存缓存通过减少glob()
调用数提高了性能。 GitHub-34025
- 改进了异步订单网格重新索引过程的性能。
- 产品导出期间的内存消耗已得到优化。
- 已优化加载包含相关产品的产品详细信息页面。 相关的产品条件查询也已优化。
定价
- 现在,当产品价格接近或等于零,并且启用了共享目录时,价格排序可按预期工作。 以前,零级价格在价格重新索引过程中被忽略。
- 如果“类别”页面上的价格过滤器不包含第二个值,则Adobe Commerce不再引发错误。 以前,Adobe Commerce在日志文件中引发异常。
ProductAlert
- 新
product_alert
使用者通过创建队列消息、运行该使用者并缩短执行时间,改进了客户警报的发送。 以前,在发送超过100,000个产品警报时,Adobe Commerce会引发内存不足异常。 Adobe Commerce还需要20多个小时才能发送所有警报。
产品视频
- 添加视频时,如果输入不完整的URL,Adobe Commerce现在会启用 保存 按钮并自动完成字段(管理员 目录 > 产品 > 添加视频)。 以前,已禁用 保存 按钮,并且未填充字段。
退货授权(RMA)
- “管理员创建退货产品”网格现在显示税,包括仅配置为随价格显示税的产品价格。 以前,Adobe Commerce不检查
tax/calculation/price_includes_tax
标记上的配置显示设置。
审核
- 现在,产品列表视图会显示产品的正确星级评级。 GitHub-30196
- 当购物者单击storefront产品页面上的 审核 时,审核现在可按预期显示。
- 现在,店面产品列表页面上的Grid和List视图中的产品星级是一致的。 以前,同一产品在“网格”和“列表”视图模式中可能有不同的评级。
奖励
- 奖励积分余额和奖励积分历史记录现在显示相同的余额。 过期积分现已正确扣除。 以前,奖励积分余额不能准确反映过期积分。
- 过期的奖励积分现已在店面奖励积分历史记录网格的“原因”部分中标记为 已过期。
销售
- 在升级到MariaDB 10.2.34后,针对具有大型数据集的表以异步模式更新销售网格的性能得到了改进。
- Adobe Commerce现在会按预期从店面 HTML > 我的订单 > 查看订单 页面中删除帐户标记。 以前,Adobe Commerce在店面客户订单注释部分中显示HTML标记。
- 已添加自动测试覆盖率以验证是否存在
sales_shipment_grid.order_id
的索引。
POST V1/orders
调用现在可更新扩展属性,而不会出现错误。 以前,会出现SQL语法错误。
Search search-heading
- 价格范围的分层导航选项现在可以按预期与自定义价格属性配合使用。 Adobe Commerce在筛选自定义价格属性时使用价格导航步骤的配置。 以前,Adobe Commerce使用手动步骤配置。
- 店面现在会在分层导航中显示当前类别的所有子类别,而不管目录中可用的类别数量如何。
- Elasticsearch目录搜索现在不区分变音符号。 以前,搜索不带重音符号的术语所产生的结果不同于搜索带有重音符号的相同术语所产生的结果。
- 现在,可以对包含特殊字符的SKU属性正确设置搜索权重。
category_name
已添加到系统保留的产品属性代码。 如果用户尝试创建属性代码为category_name
的产品属性,Adobe Commerce现在会显示错误。 以前,产品未列在预期类别中,并记录了Elasticsearch错误。
- 现在,在每个GraphQL搜索查询后都会更新常用搜索词。
- Adobe Commerce现在将正确的价格字段添加到Elasticsearch价格指数映射中。 以前,使用商店ID而非网站ID向索引添加不正确的价格字段。
配送
- 装运电子邮件现在仅包含当前装运的跟踪编号。 以前,如果订单包含多个发运,则每个发运的电子邮件将包括与该订单相关的所有发运的跟踪编号。
- 现在,当购物者在多送货模式下从购物车中删除产品,然后切换到单个送货地址时,Adobe Commerce会成功更新迷你购物车。 以前,产品价格没有按预期更新。
- 使用S3存储适配器时,现在可按预期导入表速率。 以前,Adobe Commerce显示此错误:
File "https://[bucket].s3.eu-central-1.amazonaws.com/[prefix]/tmp/phpLjGmHf" not found
。 GitHub-33072
- 您现在可以按预期从 商店 > 配置 > 销售 > 销售电子邮件 禁用装运更新电子邮件。 GitHub-33165
- Adobe Commerce现在在管理员和店面发票页总数上显示免运费(0)。 以前,当订单的付运量为零时,Adobe Commerce不会在发票页付运总量中显示付运总额。
- 对在线航运承运人的费率请求已从多个请求减少为一个。 现在可以正确计算每个项目/包的包保险和处理价格。 以前,Adobe Commerce显示联邦快递配送方式运费不正确。
- 在创建从波多黎各发运的发运标签时,Adobe Commerce现在会显示UPS费率。 以前,Adobe Commerce不显示这些UPS费率。
- 从输入框中删除后,货运街道地址现在会按预期完全清除。 以前,删除地址后,文本框会保留一个或多个字符。
暂存
- 现在可正确保存产品计划更新图像和视频。 以前,在创建新的计划更新后,会删除视频、URL、标题和描述。
- 对于启用了属性的商店视图,Adobe Commerce现在在“计划新更新”表单中显示“最低广告价格”属性。
- Adobe Commerce现在在产品计划更新表单中仅按预期显示一个“图像”选项卡。 以前,Adobe Commerce会复制此选项卡。
- 现在,产品库存状态在计划更新预览中正确显示。 以前,在创建计划更新期间启用之前禁用的产品时,产品状态显示为缺货。
存储
- 现在,在包含位于不同URL上的多个商店的部署中,“以客户身份登录”功能可按预期工作。 以前,即使访问正确的商店域,Adobe Commerce也不会加载正确的商店。
站点范围分析工具
- 商家现在可以按预期访问站点范围分析工具。 以前,损坏的键对会阻止某些商家访问该工具。
税
- 现在,当客户在选择“发运至多个地址”后删除项目时,Adobe Commerce可正确计算mini cart小计。
- 当购物车仅包含虚拟产品时,Adobe Commerce现在会在所有结账页面上显示相同的税率。
- 现在,可配置产品的层级价格可在店面中准确显示已包含和已排除的税值。 以前,对于包含的税和排除的税,显示相同的值。 GitHub-33673
测试
- WebAPI测试现在与PHP 8.1兼容。GitHub-34653
- 集成测试现在与PHP 8.1兼容。GitHub-34567,GitHub-34569
- 商家现在可以测试购物者所在国家的购物者体验,而不是商人的位置。
- 集成测试内存消耗减少,提高了测试性能,减少了完成测试所需的时间。
- 添加了用于验证店面和管理员的自定义日期属性格式的测试。
- 已更正
StorefrontPOWorkflowVerifyApprovalFlowTabTest
的错误。 GitHub-34378
- 功能测试已稳定以确保PHP 8.x兼容性。 GitHub-34327,GitHub-34188
- 修复了WebAPI测试中的功能问题。 GitHub-34196
- 修复了导致静态测试误报的错误。 GitHub-34056
- 已更新
call_user_func_array
的测试覆盖率。 GitHub-34301
- 使用AWSElasticsearch运行时,
Magento\GraphQl\CatalogGraphQl\ProductSearchTest
测试不再引发此错误:Magento\GraphQl\CatalogGraphQl\ProductSearchTest::testSearchSuggestions Failed asserting that an array is not empty. /var/www/html/dev/tests/api-functional/testsuite/Magento/GraphQl/CatalogGraphQl/ProductSearchTest.php:94 /var/www/html/dev/tests/api-functional/framework/Magento/TestFramework/TestCase/GraphQlAbstract.php:257
。
-
通过重命名所有模拟变量以包含
Mock
后缀并移除对已弃用的Object Manager类的引用,修复了大量非关键单元测试警告。 GitHub-33695 -
Magento\Framework\MessageQueue\TopologyTest
测试现在与RabbitMQ服务的AWS MQ兼容。 以前,此测试失败,并显示以下消息:Invalid exchange configuration: magento-topic-based-exchange1 Failed asserting that two arrays are equal
。
- 单元测试现在与PHP 8.1兼容。GitHub-34441
单元测试
以下单元测试已重构为使用PHPUnit
而不是AspectMock
:
AllureHelperTest
GitHub-33294
ObjectHandlerUtil
GitHub-33584
MockModuleResolverBuilder
GitHub-33583
MagentoTestCase
GitHub-33582
ModuleResolverTest
GitHub-33308
ParallelGroupSorterTest
GitHub-33306
SuiteGeneratorTest
GitHub-33299
OperationDataArrayResolverTest
GitHub-33296
主题
- 当Adobe Commerce的基本URL中配置了子路径时,通知消息现在可以正确显示。
- 向店面页面模板添加了
aria-label
元素,以指示购物者在单击链接时将导航到的页面。 以前,同一链接文本用于指向不同页面的链接。 GitHub-33075
- 加载具有预先存在的自定义主题的存储的主页时,Adobe Commerce不再显示错误消息。 以前,Adobe Commerce显示此消息:
The store will not work correctly in the case when cookies are disabled
。
翻译和区域设置
UserExpiration
验证器在de_DE
和uk_UA
区域设置中不再失败。 以前,当管理员尝试在区域设置设置为de_DE
或uk_UA
的管理员中创建新用户时设置过期日期时,Adobe Commerce会引发错误。 GitHub-32497
- 在创建或编辑地址表单中,瑞士区域名称现在以英语显示的一致性。 GitHub-32602
- 更新了根西岛的
zip_codes.xml
模式,以支持萨克岛的GY10邮政编码。 GitHub-33144
- 已将白俄罗斯地区添加到
directory_country_region
表。 GitHub-33924
- 已解决显示异常,其中店面运行菲律宾(菲律宾)区域设置。 GitHub-33996
- 现在,在设置为葡萄牙语(葡萄牙)区域设置的商店中创建新帐户时,您可以成功输入客户出生日期。 以前,当您尝试创建帐户时,Adobe Commerce会引发错误。 GitHub-34130
- 现在,产品详细信息页面已成功以阿拉伯语(沙特阿拉伯)区域设置显示。 以前,此区域设置会破坏产品详细信息页面。
UI
- 更正了使用
maps.googleapis.com
的MFTF测试的错误。
- Adobe Commerce现在会修剪来自联系我们的表单电子邮件输入字段中的不间断空格字符。 以前,提交表单时不会删除电子邮件输入中的不间断空格字符(如果给定),这会导致日志文件出现错误。 生成的发送给商店管理员的联系人电子邮件中还缺少 回复 字段。
- Adobe Commerce现在会根据相关产品在管理员中的位置显示相关产品、追加销售产品和交叉销售产品。
- 在模式中使用
Multiselect
时,.action-close
按钮现在可按预期工作。 以前,action-close
按钮不起作用,因为它继承了模式窗口.action-close
按钮的CSS。 GitHub-27240
- 现在,产品视图中的主价格字段上提供了优惠代码片段。 以前,在产品视图中的相关产品块中的此字段缺少此代码片段,这会导致Google搜索结果显示错误的价格。 GitHub-34063
- 解决了运行iOS的设备上的模态高度问题。 GitHub-34467
- 现在,“操作”下拉菜单在整个店面中正确定位。 GitHub-31379
- 解决了在购物车和结账页面上导航时的辅助功能错误。 GitHub-34483
- 屏幕阅读器现在可以阅读产品页面上的所有相关表单元素。
- Storefront目录产品构件排序顺序(目录 > 类别 > 产品)现在与管理员中配置的顺序匹配。 GitHub-27126
- 现在,区域选择器可在创建帐户页面上按预期工作。 GitHub-30099
- 管理员客户网格现在可按预期显示所有客户数据,包括新添加的
date
自定义属性。 以前,将date
属性集设置为列时,Adobe Commerce引发错误,无法正确显示管理员客户网格。
- 目录 > 产品 详细信息页面上的输入标签已更改,以准确反映输入的目的。 不需要用户输入的字段不再显示带有星号的标签。
- 现在可以使用Tab键访问富文本编辑器工具栏。
- 控件的可访问名称现在包含其可见标签的文本,其中包含每页项目数下拉列表。
- 当表折叠时,目录 > 产品 详细信息页面上的表控件现在具有可见的标签和可访问的名称。
- 店面各处的按钮现在都有独特的描述性可访问名称。 以前,带有文本按钮和相邻向下箭头图标按钮的分割按钮具有相同的辅助功能名称。
- 在“管理员订单”和“金额”仪表板图表中添加了 今天 查看选项,以提供全天销售和订单的汇总。 GitHub-34008
- 多选 关闭 按钮的活动(点击)状态现在可以始终如一地工作。 GitHub-34338
- 禁用Cookie限制模式后,Adobe Commerce升级后不再显示此消息:
The store will not work correctly in the case when cookies are disabled
。 GitHub-33811
- 现在,全屏产品图像可在移动设备上具有垂直缩略图导航方向的主题中正确显示。 以前,产品图像在全屏模式下的移动设备上具有垂直缩略图导航方向的主题上无法正确缩放或不可见。
- 启用 将小组件产品与后端存储同步 配置设置时,产品详细信息页面中的错误消息不再快速消失。
- 在“新建退货”窗体的 要退货的数量 字段中添加了负值验证。
- 在启用了 地址搜索 配置设置的部署中,当购物者单击“审核和付款”页面上的 更改地址 时,Adobe Commerce不再显示重复的地址。
- 在“管理员类别”页面上的商店视图范围中工作时,添加产品 按钮现在按预期为权限受限的管理员启用。
- 现在,视图断点在Adobe Commerce中是一致的。
- Adobe Commerce现在可以在“管理客户”页面上正确显示具有自定义区域设置的自定义客户日期属性。
- 使用页面生成器添加的图像在浏览器窗口宽度为768像素时不再在店面中重复。 以前,使用此浏览器窗口宽度,Adobe Commerce通过同时显示手机版和桌面版图像来复制店面中的图像。
URL重写
- 在执行
bin/magento setup:upgrade
时创建新存储视图期间,不再为所有存储视图重新生成URL重写。 GitHub-32954
Visual Merchandiser
- 当所有简单产品都缺货时,可视促销器 从缺货到缺货 自动排序选项现在对可配置产品按预期工作。
- 不再保存未添加任何条件的可视化促销规则。
Web API框架
- 启用永久购物车后,对自我授权的客户资源的Web API请求不再引发授权错误。
- 您现在可以使用PHP 7.3上的
\Magento\Framework\Api\AbstractSimpleObjectBuilder
的子类创建对象。以前,当Adobe Commerce在Redhat上使用PHP 7.3托管时,preg_match
引发此警告消息:Warning: preg_match(): Compilation failed: unrecognized character follows...
。
PUT /V1/guest-carts/:cartId/collect-totals
请求检索的总数现在由正确的shippingMethod
更新。 GitHub-18508
- 向REST API添加新反序列化程序时,不再删除其他反序列化程序。 以前,REST API接受新的内容类型,但CORE为API定义的内容类型不再有效,并返回400错误。 GitHub-26433
- 您现在可以删除
webapi.xml
文件中定义的参数的覆盖。 GitHub-33843
- 现在,在多次连续失败的登录尝试后,Adobe Commerce会按预期通过GraphQL或REST API请求生成
customertoken
。 以前,Adobe Commerce不检查oauth_token_request_log
中lock_expires_at
的值是否大于当前日期和时间,而是始终返回尝试失败的次数,这会阻止客户登录。 GitHub-34067
- 将遮罩的引用ID添加到
QuoteRepository::getList
不再导致无限循环。 以前,使用依赖REST API更新订单的支付处理器触发此行为。 GitHub-33675
/rest/all/V1/categories/<above_created_category_id>
PUT调用现在遵循available_sort_by
指定的值。 以前,在“类别”页面上选择了“可用产品列表排序依据”下拉列表以及所有可能的选项,并选中了 全用 复选框。 GitHub-32596
- 用于创建客户令牌的REST API请求的性能已得到改进。
- 更正了 将存储代码添加到Url 设置为 是 并且REST调用不包含存储代码时发生的错误。 尽管有效负载有效,但调用返回了以下错误:
Fatal error: Allowed memory size of **​**​**​**​**​ bytes exhausted (tried to allocate ​**​** bytes) in vendor/magento/module-store/Model/StoreRepository.php on line 75
。
- 现在可以使用REST API同时创建同一订单的部分发票。
愿望清单
- 禁用 在侧栏中显示 愿望清单选项后,Adobe Commerce不再在类别侧栏中呈现愿望清单。 以前,Adobe Commerce会忽略此选项。
WYSIWYG
- PageBuilder现在可以使用WYSIWYG编辑器正确呈现自定义小组件。
已知问题
问题:商家在从Adobe Commerce 2.4.4升级到Adobe Commerce 2.4.4-p1的过程中可能会注意到包版本降级通知。 可以忽略这些消息。 包版本中的差异是由于包生成期间出现异常造成的。 没有产品功能受到影响。 有关受影响的方案和变通方法的讨论,请参阅从2.4.4升级到2.4.4-p1🔗知识库文章后降级的包。
问题:商家无法针对通过Apple支付的Braintree支付的订单提交部分退款。 当商家尝试从订单发票创建部分退款的贷项通知单时,退款数量 字段不可编辑。 解决方法:应用修补程序braintree-disabled-partial-capture-for-applepay-googlepay.patch
。 请参阅Adobe Commerce 2.4.4:无法创建部分发票知识库文章。
问题:当在管理员 商店 > 配置 > 常规 > 国家/地区选项 > 允许国家/地区 中未选择任何选项时,购物者无法将产品添加到购物车。 Adobe Commerce改为显示以下控制台错误: Failed to load resource: the server responded with a status of 400 (Bad Request)
。
问题:查找合作伙伴和扩展 > Magento Marketplace 上的Dotdigital说明已过时。 以下是更新的描述:
Dotdigital是一个客户参与平台,可帮助数字营销人员和开发人员在整个客户历程中提供通信。 我们利用客户数据的强大功能,推动品牌在增长和扩展过程中的参与、转化和忠诚度。 客户喜欢我们易用的平台,该平台可跨系统连接第一方数据、提供强大的见解并自动化预测性跨渠道消息。
Dotdigital拥有350多名员工,为世界各地和各行业的中端市场和企业公司提供服务。 我们渴望激发负责任的营销,并致力于可持续性、隐私和安全。 Dotdigital自豪地成为全球首个碳中和营销自动化平台,并获得ISO 14001、ISO 27701和ISO 27001认证。
有关购买和下载信息,请参阅Dotdigital — 营销自动化。
社区贡献
我们感谢更广泛的Magento Open Source界,并感谢他们为这一版本做出的贡献。
社区工程团队Magento参与者按月、季度、年维护了主要参与人员和合作伙伴的列表。 从该参与者页面,您可以单击链接以转到GitHub上其合并的PR。
合作伙伴投稿
下表列出了合作伙伴所做的贡献。 此表列出了提出拉取请求的合作伙伴、外部拉取请求编号以及与其关联的GitHub问题编号(如果可用)。
个人贡献者
下表列出了来自社区成员的贡献。 此表列出了参与提取请求的社区成员、外部提取请求编号以及与其关联的GitHub问题编号(如果可用)。
系统要求
我们的技术栈栈是基于PHP和MySQL构建的。 有关详细信息,请参阅系统要求。
安装和升级说明
您可以使用编辑器安装Adobe Commerce 2.4.4。
迁移工具包
Data Migration Tool可帮助将现有Magento1.x存储数据转移到Magento2.x。此命令行界面包括验证、进度跟踪、日志记录和测试功能。 有关安装说明,请参阅安装数据迁移工具。 考虑浏览或参与数据迁移存储库。
代码迁移工具包可帮助将现有Magento1.x存储扩展和自定义项传输到Magento2.x。命令行界面包括用于转换Magento1.x模块和布局的脚本。