关键更新–6.4.3和3.2.4

昨天(<12小时前),我们更新了Events Manager 6.4.2和Pro 3.2.4,很快发现在某些特定情况下,您的站点可能会遇到致命错误。我们发布这些更新是为了专门解决这个问题,并对给受影响的人带来的不便表示歉意。

受影响的人

如果您运行的是PHP 8.1以下的版本,那么上一次更新中引入的问题不会影响您,如果您运行PHP 8.x,您可能会注意到一些警告,但这些不会对工作方式产生负面影响。不过,我们仍建议您进行更新。

如果您运行的是PHP 8.1,并且还有一个旧版本的EM Pro(3.2.2或更早版本),那么更新到Events Manager 6.4.3而不更新到Pro 3.2.3(反之亦然)将导致错误。

如果你受到影响该怎么办

如果您的站点上确实有错误,有几种方法可以修复此问题:

  • 如果您更新到Events Manager 6.4.2,并且仍然使用Pro 3.2.2或更早版本:
    • 停用Pro,将EM更新至6.4.3,然后重新激活和/或更新Pro。
    • 或者,访问此处,保存文件并上传到yoursite/wp-content/plugins/events-manager/classes/em-booking.php覆盖当前文件。
  • 如果您更新为专业3.2。但仍然有活动管理器6.4。1或更早:
    • 停用两个插件,更新事件管理器,删除Pro并从我们的下载第页。

发生了什么:技术总结

这里出现的问题是,我们在EM_Booking::set_status()PHP函数,它允许我们选择应该发送哪些特定电子邮件。我们在新的取消功能中使用了此功能,因此我们可以取消预订并仅向与会者发送电子邮件。

此操作的结果是,在PHP8.1以后的版本中,所有其他扩展EM_Booking并覆盖设置状态()函数必须匹配父类中的相同参数。以前的版本会发出警告/通知,8.1以后的版本会引发严重错误。

如果启用了等待列表或多预订模式,Pro会在两种情况下扩展EM_Booking。

我们确实更新了Events Manager Pro 3.2.3来说明这一点,但当我们在各种版本的PHP上进行测试时(另外,必须激活这两个功能之一),最初并没有将其标记为严重错误。因此,如果您同时升级到两个插件版本,这也不会引起注意,如果您启用了一组特定的服务器和EM设置,就会出现问题。

考虑到这对于任何拥有旧版本Pro的人来说都是一个突破性的功能(由于许可证过期或不想升级),我们认为有必要为此制定一个向后兼容的解决方案,最终结果是我们现在使用func_get_args()来允许将其他参数传递给设置状态(),并保留与6.4.1及之前版本中相同的参数列表。