Notas de la versión de Magento Open Source 2.4.5

Notas de la versión de Magento Open Source 2.4.5

Magento Open Source incorpora mejoras en la calidad de la plataforma, los métodos de pago, el rendimiento de la caché de GraphQL y la accesibilidad. Incluye actualizaciones de los módulos integrados de Google.

Esta versión incluye más de 290 correcciones y mejoras de calidad.

Las versiones pueden contener cambios incompatibles con versiones anteriores (BIC). Magento Open Source 2.4.5 contiene cambios incompatibles con versiones anteriores. Para revisarlos, consulte la referencia de BIC. (Los cambios incompatibles más importantes se describen en los aspectos destacados de BIC. No todas las versiones introducen BIC importantes).

Magento Open Source incorpora mejoras en la calidad de la plataforma, los métodos de pago, el rendimiento de la caché de GraphQL y la accesibilidad. Incluye actualizaciones de los módulos integrados de Google.

Esta versión incluye más de 290 correcciones y mejoras de calidad.

Las versiones pueden contener cambios incompatibles con versiones anteriores (BIC). Magento Open Source 2.4.5 contiene cambios incompatibles con versiones anteriores. Para revisarlos, consulte la referencia de BIC. (Los cambios incompatibles más importantes se describen en los aspectos destacados de BIC. No todas las versiones introducen BIC importantes).

Otra información de la versión

Aunque el código de estas funcionalidades se incluye en las versiones trimestrales del código principal de Magento Open Source, varios de estos proyectos también se publican de forma independiente. Las correcciones de errores de estos proyectos se documentan en la información de versión específica de cada proyecto, disponible en su documentación.

Aspectos destacados de Magento Open Source 2.4.5

Estos son los aspectos más destacados de esta versión.

Mejoras de seguridad

Esta versión incluye 20 correcciones de seguridad y mejoras de seguridad de la plataforma. Esta corrección de seguridad se ha incorporado también a Magento Open Source 2.4.4-p1 y Magento Open Source 2.3.7-p4.

Hasta la fecha no se ha producido ningún ataque confirmado relacionado con estos problemas. Sin embargo, algunas vulnerabilidades podrían explotarse para acceder a información de clientes o tomar el control de sesiones de administrador. La mayoría de estos problemas requieren que el atacante obtenga primero acceso al Admin. Por ello, le recordamos que tome todas las medidas necesarias para proteger su Admin, entre ellas:

  • Lista de IP permitidas
  • autenticación de dos factores
  • uso de una VPN
  • uso de una ubicación única en lugar de /admin
  • buenas prácticas con las contraseñas

Consulte el boletín de seguridad de Adobe para obtener la información más reciente sobre estos problemas corregidos.

Mejoras de seguridad adicionales

Las mejoras de seguridad de esta versión refuerzan el cumplimiento de las mejores prácticas de seguridad más recientes, entre ellas:

  • Se ha añadido compatibilidad con reCAPTCHA a los formularios de compartir la lista de deseos, crear una nueva cuenta de cliente y tarjeta regalo.

  • Se han añadido recursos ACL a Inventory.

  • Se ha reforzado la seguridad de las plantillas de Inventory.

  • El filtro MaliciousCode se ha actualizado para utilizar la biblioteca HtmlPurifier.

Mejoras de la plataforma

Magento Open Source 2.4.5 ahora es compatible con

  • Composer 2.2

  • TinyMCE (5.10.2). Las versiones anteriores de TinyMCE (v5.9.2 o anteriores) permitían la ejecución arbitraria de JavaScript al actualizar una URL especialmente manipulada o una imagen con una URL especialmente manipulada.

  • jQueryUI (1.13.1)

  • PHPStan (^1.5.7 con restricción) GitHub-35315

El esquema de la integración de DHL se ha actualizado de v6.0 a v6.2. Esta actualización no supone ningún cambio en el comportamiento del producto.

Las bibliotecas JavaScript obsoletas se han actualizado a sus últimas versiones y se han eliminado las dependencias obsoletas. Estos cambios son compatibles con versiones anteriores.

Actualizaciones de dependencias de Composer

Las siguientes dependencias de Composer se han actualizado a las últimas versiones con restricción:

  • colinmollenhour/credis (1.13.0)
  • guzzlehttp/guzzle (^7.4.2)
  • laminas/laminas-captcha (actualizada con la restricción ^2.12)
  • laminas/laminas-db (^2.15.0)
  • laminas/laminas-di (^3.7.0)
  • laminas/laminas-escaper (~2.10.0)
  • laminas/laminas-eventmanager (^3.5.0)
  • laminas/laminas-feed (^2.17.0)
  • laminas/laminas-mail (^2.16.0)
  • laminas/laminas-mvc (^3.3.3)
  • laminas/laminas-server (^2.11.1)
  • laminas/laminas-servicemanager (^3.11.0)
  • laminas/laminas-validator (^2.17.0)
  • league/fly (2.4.3)
  • monolog/monolog (^2.5)
  • phpmd/phpmd (^2.12.0)
  • phpstan/phpstan (^1.5.7)
  • phpunit/phpunit (~9.5.20)
  • php-cs-fixer (^3.4.0)
  • webonyx/graphql-php (14.11.6)

Se han eliminado las dependencias laminas/laminas-session, laminas/laminas-text y laminas/laminas-view.

Otras actualizaciones y sustituciones

  • El esquema de la integración de DHL se ha actualizado de v6.0 a v6.2.

  • La URL de pasarela predeterminada para los envíos de USPS se ha actualizado para usar https en lugar de http.

  • La biblioteca Froogaloop se ha sustituido por la biblioteca Player.js de Vimeo (2.16.4).

  • La biblioteca grunt-eslint (NPM) se ha actualizado a la última versión.

  • Las bibliotecas jQuery Storage se han sustituido por julien-maurel/js-storage.

  • Las herramientas de análisis estático de código php-cs-fixer y phpcs ahora son compatibles con PHP 8.x.

  • Dependencia glob.js (actualizada con restricción a ~7.2.0)

  • Dependencia serve-static.js (actualizada con restricción ~1.14.2)

  • Dependencia underscore.js (NPM) (1.14.2)

  • moment-timezone-with-data.js (0.5.34)

  • La biblioteca jquery/jquery-cookie se ha sustituido por js-cookie/js-cookie.

  • Las bibliotecas jarallax.js y jaralax-video.js se han actualizado para usar la última versión de la API REST de Vimeo.

Actualizaciones de accesibilidad

Esta versión se ha centrado en crear una experiencia de tienda en Venia (PWA) más perceptible, operable, comprensible y robusta. Estas mejoras incluyen:

  • La información resumida de los resultados de búsqueda ahora se anuncia a los usuarios de lectores de pantalla
  • Los lectores de pantalla ahora reciben aviso cuando se carga una nueva vista de página
  • Se han mejorado el contraste y la accesibilidad mediante teclado

Google Analytics

Google ha actualizado los mecanismos de seguimiento e integración de AdWords y Analytics en las aplicaciones web mediante la integración con GTag. Esta integración de las funcionalidades de Google en las páginas web amplía las posibilidades de seguir y gestionar contenido a través de los servicios de Google. Adobe Commerce cuenta con un conjunto de módulos integrados, como Google AdWords, Analytics, Optimizer y TagManager, que utilizan la API anterior para integrarse con los servicios de Google. En esta versión, hemos vuelto a implementar esta integración con el enfoque GTag.​ Consulte Migrar de analytics.js a gtag.js (Universal Analytics).

GraphQL

Las mejoras de rendimiento de GraphQL incluyen:

  • Los desarrolladores y administradores disfrutan de una reconstrucción más rápida del esquema GraphQL unificado de la tienda durante el despliegue o al cambiar atributos en producción. Los compradores también notan una carga de página mucho más rápida cuando hay que reconstruir el esquema GraphQL por cualquier motivo.

  • Se ha añadido la posibilidad de consumir la fecha y hora de caducidad del token de autorización mediante JSON Web Tokens (JWT) en la API GraphQL.

  • El comando bin/magento config:set graphql/session/disable 1 permite a los comerciantes desactivar por completo la creación de cookies de sesión en todas las operaciones GraphQL. De forma predeterminada, Magento Open Source crea estas cookies y depende de ellas para la autorización, lo que afecta al rendimiento. A partir de ahora, recomendamos utilizar tokens como única forma de autorización para las solicitudes GraphQL. No recomendamos usar cookies de sesión por sí solas ni junto con tokens de autorización. Consulte Autorización en GraphQL.

  • Las cookies de sesión ahora se inician en las operaciones GraphQL mediante proxies de clase solo cuando es necesario.

  • Se ha eliminado el uso de la sesión en los procesadores de cabeceras http de GraphQL, como los de tienda, cliente o divisa.

Consulte la Guía para desarrolladores de GraphQL para obtener más información sobre estas mejoras.

Inventory

Se ha reforzado la seguridad de las plantillas de Inventory.

Page Builder

Page Builder v.1.7.2 es compatible con Magento Open Source 2.4.5.

El diseño de columnas de Page Builder incluye estas mejoras:

  • Las columnas ahora están expuestas, lo que permite a los usuarios controlar su configuración en la tienda.

  • El redimensionamiento de columnas ahora admite el ajuste de línea activado por acciones del usuario.

Pagos

Apple Pay ya está disponible para todos los comerciantes con despliegues que tengan Payment Services activado. Este método de pago no requiere que los compradores introduzcan los datos de su tarjeta de crédito o débito. Apple Pay está disponible en la página de detalles del producto, el minicarrito, el carrito de la compra y el proceso de pago. Los comerciantes pueden activar esta funcionalidad.

PayPal

  • Los comerciantes de España e Italia ya pueden ofrecer PayPal Pay Later a sus compradores.

  • Las vistas previas de los botones de PayPal, Credit y Pay Later ya están disponibles en el Admin para las páginas de pago, minicarrito, carrito y producto. Las vistas previas muestran cómo se verán estos botones cuando estén activados y se muestren en la tienda.

Braintree

  • Braintree ha dejado de ofrecer la integración de protección contra el fraude KOUNT, que se ha eliminado del código de Magento Open Source.

  • Se ha añadido al Admin la opción Always request 3DS.

PWA Studio

PWA Studio v.12.5.x es compatible con Magento Open Source 2.4.5.

Las nuevas funcionalidades de esta versión incluyen:

  • En la tienda de PWA Studio se recopilan datos sobre el comportamiento de los compradores para los servicios de analítica web. Los comerciantes ya pueden suscribirse a estos eventos y ampliarlos según sus necesidades.

  • Los comerciantes ya pueden seleccionar desde el Admin un servicio para desplegar (Google Tag Manager).

Para obtener información sobre mejoras y correcciones de errores, consulte las versiones de PWA Studio. Consulte Compatibilidad de versiones para ver la lista de versiones de PWA Studio y las versiones del núcleo de Magento Open Source compatibles.

Problemas corregidos

Hemos corregido cientos de problemas en el código principal de Magento Open Source 2.4.5.

Instalación, actualización y despliegue

  • Ahora puede cambiar el nombre de un parche de datos y añadir el nombre de clase anterior como alias en la tabla patch_list de la base de datos. Ahora se comprueba si los alias del parche de datos ya existían en la base de datos antes de aplicar el parche. Anteriormente, Magento Open Source generaba un error en estas condiciones.
  • Magento Open Source ya no genera una excepción al intentar cambiar desde el Admin la URL del Admin por una URL personalizada. Anteriormente, tras cambiar la URL del Admin, no era posible iniciar sesión. GitHub-35416
  • Los comerciantes ya pueden actualizar correctamente un despliegue de Magento Open Source 2.4.2 con Klarna a Magento Open Source 2.4.3. GitHub-33760
  • La ruta a Magento Open Source Analytics ya no está fijada en el código. Anteriormente, esta ruta fija provocaba conflictos cuando se instalaban varias instancias de Magento Open Source en un mismo servidor. GitHub-29373

Accesibilidad

  • El botón Shopping bag ahora ofrece una indicación programática o textual de su estado. Los usuarios de lectores de pantalla reciben aviso de que al hacer clic en este botón se desplegará otro contenido, o de que el contenido asociado está desplegado o contraído. Anteriormente, este botón no ofrecía ninguna indicación programática o textual de su estado.
  • Los elementos de texto o imágenes de texto de la opción de tarjeta de crédito en la información de pago ahora cumplen la relación de contraste mínima de 4.5:1 exigida por WCAG 2.0 para texto estándar de 18pt (24px) o de 14pt (19px) en negrita. Anteriormente, no alcanzaban la relación de contraste esperada.
  • Los indicadores de foco personalizados de Address book > Communication > Account information ahora ofrecen una relación de contraste de al menos 3:1 respecto al color de fondo.
  • El texto de los botones Filter y Sort ahora cumple la relación de contraste mínima de 4.5:1 exigida por WCAG 2.0 para texto estándar de 18pt (24px) o de 14pt (19px) en negrita. Anteriormente, los botones de navegación de los carruseles no cumplían estos requisitos mínimos de contraste.
  • Los lectores de pantalla anuncian la palabra “Venia” una sola vez al navegar a las cabeceras y pies de página de Venia. Anteriormente, la misma palabra se anunciaba dos veces seguidas.
  • Los botones que abren menús desplegables ahora proporcionan a los lectores de pantalla información sobre su estado desplegado o contraído y nombres accesibles.
  • Los usuarios de lectores de pantalla reciben aviso cuando se muestra una nueva vista de página. Anteriormente, cuando cambiaba el título de una página, el cambio no se anunciaba.

Adobe Stock

  • Los usuarios ya pueden cerrar sesión correctamente en Adobe Stock.

Productos agrupados (bundle)

  • Ahora puede usar el endpoint PUT /V1/products para actualizar los atributos de precio de un producto en un sitio web concreto. Anteriormente, si algunos atributos del producto se habían sobrescrito para una vista de tienda concreta, no se podía actualizar un atributo de precio de ese producto en esa misma vista de tienda.
  • Magento Open Source ahora calcula correctamente el total del carrito para un producto bundle cuando se aplica la regla Product Subselect.

Caché

  • La caché de página completa ya no aparece como desactivada en el Admin cuando se vacía la caché de Magento Open Source y use_stale_cache está activado.
  • Los marcadores de despliegue de New Relic ahora funcionan como se espera al vaciar la caché. GitHub-32649

Carrito y proceso de pago

  • La ventana emergente de búsqueda de direcciones en el paso de facturación del proceso de pago ya no provoca errores en el DOM.
  • La mutación addProductsToCart ahora funciona correctamente con varios productos. Anteriormente, esta consulta devolvía el primer producto con un subtotal correcto, pero un subtotal de 0 para los demás productos.
  • Ahora se gestionan las excepciones de permisos para los productos restringidos que se añaden por SKU. Los compradores reciben un mensaje adecuado en la tienda y el campo de cantidad de la tabla de errores se desactiva. Anteriormente, Magento Open Source generaba una excepción como esta: There has been an error processing your request.
  • Se ha optimizado la consulta SQL que actualiza los presupuestos afectados tras desactivar una regla de precios del carrito, para evitar bloquear toda la tabla de presupuestos.
  • En un despliegue multisitio con la compra como invitado desactivada, los compradores con cuentas compartidas globalmente ya no tienen que volver a iniciar sesión en un sitio web secundario. Los datos del cliente ahora se cargan cuando el comprador navega al subdominio. Ya no se le pide que vuelva a iniciar sesión y se muestra el contenido anterior del carrito.
  • En un proceso de pago con varias direcciones, los valores del desplegable de direcciones ya no cambian para los artículos restantes de un presupuesto cuando se elimina un artículo de dirección con cantidad única. Anteriormente, al eliminar un producto de un presupuesto durante el pago con varias direcciones, el valor del desplegable de direcciones volvía al predeterminado para todos los productos.
  • La consulta cart ya no devuelve respuestas nulas cuando un producto está agotado. Se ha añadido a la respuesta un nuevo elemento errors que contiene el mensaje de error. Anteriormente, al ejecutar una consulta con un producto agotado, Magento Open Source mostraba un valor null en la sección items de la respuesta. Consulte consulta cart.
  • Los métodos de envío ya están disponibles como se espera cuando un comprador invitado crea una cuenta después de añadir un producto al carrito y antes de pasar al proceso de pago. Anteriormente, cuando un invitado añadía un producto al carrito antes de crear una cuenta, no había métodos de envío disponibles durante el pago. Tras añadir otros productos al carrito, los métodos de envío pasaban a estar disponibles.
  • Los compradores ya pueden añadir productos al carrito cuando no se ha seleccionado ninguna opción en el campo Allow Countries.
  • El contenido del carrito y el estado de inicio de sesión ahora se recargan como se espera tras caducar una sesión cuando Enable Persistence está configurado como Yes. GitHub-35182
  • Los subtotales del minicarrito ahora se actualizan correctamente cuando un comprador pasa de la página de envío a la página del carrito durante el proceso de pago de un pedido con varias direcciones de envío. Anteriormente, el subtotal se duplicaba.
  • El minicarrito ahora muestra los productos añadidos previamente tras caducar una sesión cuando Enable Persistence está activado. GitHub-35183
  • Los comerciantes ya pueden crear una factura rectificativa en la que Refund Shipping (Incl. Tax) esté configurado en -0.01 y ahora pueden fijar este importe en 0. Anteriormente, no se podía crear la factura rectificativa en estas condiciones.

Regla de precios del carrito

  • El ámbito de atributo Parent Only ahora se utiliza correctamente en la condición de la regla del carrito.

Catálogo

  • Las claves URL de los productos ya no cambian al actualizar el nombre del producto mediante PUT /V1/products/ para una vista de tienda. Anteriormente, se generaba una nueva clave URL basada en el nuevo nombre y se asignaba al producto, sobrescribiendo la clave URL de esa vista de tienda.
  • Añadir un producto a una categoría desde el widget de productos de Page Builder en modo carrusel ya no provoca la recarga de la página.
  • Los productos configurados como Not Visible Individually ya no aparecen en los resultados de la búsqueda avanzada del catálogo.
  • Los atributos dinámicos de bundle ahora se actualizan correctamente en la página de actualización masiva de atributos. Anteriormente, el atributo Dynamic SKU seguía configurado como Yes aunque se hubiera desactivado en la página de actualización masiva.
  • Las reglas de catálogo ahora se aplican correctamente mediante indexadores incrementales en lugar de una reindexación completa.
  • Ahora puede alternar correctamente entre la vista de lista y la de cuadrícula en listados de productos de varias páginas. Anteriormente, al ir a la última página de un listado de productos en vista de lista y cambiar a la vista de cuadrícula, Magento Open Source mostraba este error: Unfortunately there are no products in this category on our website currently.
  • Los informes del Admin Action Log ahora muestran como se espera los ID de producto actualizados y la información de estado actualizada.
  • Los triggers ahora se restauran como se espera en la tabla catalogrule_product_price tras una reindexación completa. Anteriormente, los triggers se eliminaban de la tabla catalogrule_product_price tras una reindexación completa de catalogrule_rule o catalogrule_product.
  • Las reglas de categoría que se utilizan para asignar productos a categorías ya no cambian aleatoriamente.
  • Un administrador con acceso restringido por ámbito ya no puede actualizar categorías de forma global. Anteriormente, cuando varios sitios web usaban la misma categoría con productos distintos y un administrador con permisos limitados a una tienda cambiaba los productos de la categoría, la selección de productos también cambiaba en las demás tiendas.
  • La página de detalles del producto ahora muestra el precio correcto cuando se utiliza una divisa no predeterminada para una configuración regional concreta. Anteriormente, los números no se localizaban como se esperaba en la tienda.
  • La API y la tienda ahora muestran el mismo mensaje de error al intentar obtener los precios escalonados de un producto con registros duplicados. Anteriormente, PUT /V1/products/tier-prices devolvía un mensaje de error incorrecto.
  • Magento Open Source ahora muestra mensajes de error de validación al intentar añadir una clave URL de producto que termina en guion. También hay disponible un texto de ayuda informativo.
  • El nuevo campo ConfigurableWishlistItem.configured_variant ha sustituido al campo ConfigurableWishlistItem.child_sku. Este último provocaba un error interno cuando la lista de deseos de un cliente contenía un producto configurable sin configurar.
  • Durante la actualización masiva de atributos para cambiar la visibilidad de los productos, las reescrituras de URL ahora se generan solo para las tiendas seleccionadas. Anteriormente, la actualización masiva creaba una reescritura de URL para la tienda equivocada.
  • Cuando el ajuste Synchronize widget products with backend storage está activado, Magento Open Source añade los datos de los productos vistos recientemente a la tabla catalog_product_frontend_action de la base de datos, incluyendo el ID del cliente o del visitante al añadir registros. La sección recently_viewed_product de la respuesta ahora está vacía si el ID de cliente y el ID de visitante son nulos. Como resultado, cuando se envía la solicitud Ajax customer/section/load, Magento Open Source puede filtrar correctamente los productos vistos recientemente según el ID de cliente o de visitante. Anteriormente, la respuesta incluía todos los datos disponibles en la tabla catalog_product_frontend_action porque no se comprobaba si el ID de cliente o de visitante estaba vacío.
  • Los administradores ya pueden cambiar las opciones de productos configurables en el carrito de un comprador desde el panel deslizante del Admin. Anteriormente, el panel deslizante no funcionaba correctamente.
  • La caché de página ahora se borra como se espera para el producto configurable padre cuando se guardan cambios en un producto hijo. Anteriormente, como la caché no se borraba, los cambios no se reflejaban en la página del producto configurable en la tienda. GitHub-34508
  • Los listados de productos ahora se muestran correctamente en el Admin. Anteriormente, el listado no se mostraba y Magento Open Source mostraba este error: Item (Magento\Catalog\Model\Product\Interceptor) with the same ID "<ID>" already exists. GitHub-33145
  • En despliegues multitienda, los precios de los productos ahora coinciden en la página de detalles del producto y en la búsqueda de la tienda después de cambiar el ámbito de precios del catálogo de website a global. Anteriormente, la página de resultados de búsqueda del catálogo mostraba el precio global y la página de detalles del producto mostraba el precio de website. GitHub-34074
  • La navegación por capas ahora muestra como se espera los productos de precio más alto cuando Price Navigation Step Calculation está configurado como Manual.
  • Ahora puede cambiar el límite de productos por página que se muestra en una categoría cuando Remember Category Pagination está activado. Anteriormente, el form_key de la cookie y el form_key de la interfaz no coincidían, y Magento Open Source mostraba este error: Invalid Form Key. Please refresh the page.
  • El indexador EAV ahora procesa los ID de producto como tipo int para evitar posibles problemas de rendimiento.
  • Ahora se genera correctamente una nueva caché de producto después de añadir a un producto una imagen cuyo nombre contiene ‘.’, guardar el producto y limpiar la caché de imágenes. GitHub-32699
  • Magento Open Source ahora muestra un mensaje de error como se espera al intentar crear un atributo desde la página del producto sin completar el campo Admin. GitHub-33099

  • Las valoraciones de productos ahora son correctas en todos los listados de productos del catálogo cuando la página de inicio contiene varios listados. GitHub-33867

Productos configurables

  • Magento Open Source ahora muestra el precio correcto de un producto configurable con una opción seleccionada tras cambiar su cantidad en la página de detalles del producto. Anteriormente, el precio volvía al valor inicial al cambiar la cantidad.
  • La consulta products ahora obtiene precios de productos configurables que reflejan con precisión el ajuste de configuración Display Out Of Stock. Anteriormente, la consulta no devolvía precios exactos.
  • Las opciones configurables ahora se vinculan a los productos configurables creados en el Admin mediante POST /V1/configurable-products/configurable1/child.
  • Los atributos de selección múltiple ahora se guardan correctamente al editar un producto. Anteriormente, al guardar un producto, Magento Open Source guardaba la opción predeterminada tanto para los atributos no seleccionados como para los seleccionados.
  • Magento Open Source ahora muestra los atributos configurables como se espera al crear atributos select globales mediante un script de parche. Anteriormente, los atributos globales aptos quedaban ocultos.
  • La mutación addConfigurableProductsToCart ya puede utilizarse para añadir productos configurables con opciones personalizadas. Anteriormente, Magento Open Source generaba este error: Magento 2.3.4 graphql Notice: Undefined index: option_value in /var/www/html/mg234/vendor/magento/module-configurable-product-graph-ql/Model/Resolver/ConfigurableCartItemOptions.php on line 62. GitHub-28860

  • Ahora puede volver a pedir productos configurables con opciones personalizadas opcionales. Anteriormente, los intentos de repetir el pedido fallaban y se mostraba este error: Some of the selected options are not currently available. GitHub-35409

  • La mutación addConfigurableProductsToCart ahora funciona como se espera con varios productos. Anteriormente, se devolvía información de producto incorrecta o un mensaje de error no válido. GitHub-30948

Cliente

  • Magento Open Source ahora muestra correctamente en la tienda los atributos de sistema EAV predefinidos según la configuración del sitio web. Anteriormente, los atributos de cliente de nivel de sitio web que estaban activados en un sitio y desactivados en otro se mostraban como activados en ambos.

Productos descargables

  • Ahora puede eliminar enlaces y archivos de muestra de un producto descargable. GitHub-31887

Correo electrónico

  • Los correos electrónicos emitidos por el sistema ahora se envían correctamente a destinatarios cuya dirección contiene “.-“.
  • Los clientes ahora reciben los recordatorios por correo electrónico de sus carritos abandonados según la programación correcta. La nueva función SQL TIMESTAMPDIFF(DAY, ,) ha sustituido a la función TO_DAYS() y calcula la diferencia entre las marcas de tiempo teniendo en cuenta la fecha y la hora. Anteriormente, los recordatorios no se enviaban según lo programado debido al cálculo incorrecto de dos valores de fecha y hora: el del abandono del carrito (cualquier zona horaria) y la hora del servidor (UTC).
  • Magento Open Source ahora muestra un mensaje de error en la página de envío cuando un comprador introduce un formato de correo electrónico no válido y hace clic en Place Order. Anteriormente, el mensaje de error se mostraba en la página de pago. [GitHub-33590](https://github.com/magento/magento2/issues/33590

Frameworks

  • El comando bin/magento setup:config:set ya no sobrescribe los prefijos de ID de caché ya definidos en app/etc/env.php.
  • El comando bin/magento setup:static-content:deploy -s compact ahora incluye como se espera los estilos de los temas hijos. Anteriormente, los archivos CSS del tema no aparecían en la tienda tras el despliegue.
  • Se ha añadido un nuevo sniff que comprueba si se utilizan barras de cierre en los elementos void.
  • Magento Open Source ya no genera un error SQL tras asignar una nueva fuente a un producto y cambiar su cantidad. GitHub-35262
  • El orden de clasificación de los atributos ahora funciona según lo especificado en el archivo di.xml tras la actualización.
  • La función updateCartCurrency ahora asigna una cadena en lugar de un objeto dentro del objeto del carrito. Anteriormente, Magento Open Source no cargaba un presupuesto mediante getQuote porque la función updateCartCurrency asignaba un objeto en lugar de una cadena dentro del objeto del carrito. GitHub-34199
  • Ya no aparecen avisos de obsolescencia en las pruebas unitarias debido a \DateTimeFormatter::formatObject(). Este método ahora funciona como se espera con valores numéricos para $format.
  • Magento Open Source ya no muestra un error de preg_replace() en el Admin. El tercer argumento ($subject) ahora es de tipo array|string en lugar de bool.
  • El método isFreeShipping ahora devuelve un entero en lugar de un booleano.GitHub-35164
  • Magento Open Source ya no genera el siguiente error al crear un plugin para cualquier método de la clase vendor/magento/module-backend/Model/Menu.php: Error: Call to undefined method ReflectionUnionType::getName(). GitHub-35292
  • Magento Open Source ahora devuelve un error 404 en lugar de un error 500 al acceder a /checkout/sidebar/updateItemQty/?item_qty=error en la tienda. Anteriormente, se generaba este error: Warning: A non-numeric value encountered in /vendor/magento/module-checkout/Controller/Sidebar/UpdateItemQty.php on line 69. GitHub-34380
  • Magento Open Source ya no provoca el error trim(): Passing null to parameter #1 ($string) of type string is deprecated cuando la conexión AMPQ se configura sin SSL.
  • Se ha corregido la definición de base de datos longblog a long blob. GitHub-35108
  • El texto de Knockout que contiene comillas simples ahora se puede traducir. GitHub-34319
  • Se ha corregido un TypeError en magento2/app/code/Magento/Security/Model/AdminSessionsManager.php, de int a string. GitHub-34415
  • Se ha añadido .htpasswd a las ubicaciones prohibidas en el archivo de configuración de nginx. GitHub-35150
  • Se ha mejorado el tiempo de carga de las páginas de listado de productos por categoría añadiendo Magento_Ui/js/core/app como deps en app/code/Magento/Ui/view/frontend/requirejs-config.js. GitHub-34847
  • El método ProductRepository.php:get ahora devuelve las claves de caché una sola vez. Anteriormente, se devolvían dos veces. GitHub-34958
  • Se ha añadido un mensaje de error a una nueva excepción creada en el gestor de excepciones de las tareas cron. GitHub-34941
  • Se han actualizado los archivos ReadMe de los módulos GraphQl-GroupedProductGraphQl. GitHub-34951
  • Las páginas de impresión de pedidos, facturas y facturas rectificativas de la tienda ya no muestran el logotipo predeterminado de Luma en lugar del logotipo configurado para el sitio web. GitHub-34942

Correcciones generales

  • Configurar el tamaño máximo de sesión en 0 (Admin Store > Settings > Configuration - Advanced) ya no cierra la sesión del administrador. GitHub-35312
  • Al añadir desde el Admin una nueva dirección de cliente asignada a un sitio web no predeterminado, los ajustes de configuración de los atributos de dirección del cliente ahora se cargan correctamente según el sitio web al que está asignado el cliente.
  • Magento Open Source ya no genera una excepción al añadir un producto bundle mediante Page Builder.
  • Ahora puede crear una cuenta de cliente en un dispositivo iOS con el apóstrofo inclinado (’) en el nombre, segundo nombre o apellido. Anteriormente, solo se permitía el apóstrofo recto, y usar el apóstrofo inclinado predeterminado de iOS 11+ provocaba el error Name is not valid!.
  • La consulta products ahora devuelve información de producto que refleja con precisión la configuración “Show Related Products”. Los campos related_products, upsell_products y crosssell_products de ProductInterface en GraphQL ahora se resuelven según la configuración de Show Related Products, Show Upsell Products y Show Cross-Sell Products, respectivamente.
  • El atributo Set Product as New From Date ahora muestra la fecha correcta cuando el atributo Set Product as New se configura mediante una actualización masiva de productos. Anteriormente, Set Product as New From Date se mostraba como Jan 1, 1970.
  • A los usuarios con roles restringidos ya no se les concede acceso automáticamente a los nuevos módulos.
  • Las condiciones de las reglas de productos relacionados ahora funcionan como se espera con productos que contienen atributos multiselect.
  • Los comerciantes ya pueden añadir un atributo de precio escalonado (tier_price) a las comparaciones de productos. Anteriormente, la página de comparación de productos fallaba cuando el ajuste Comparable on storefront de este atributo estaba activado. GitHub-35244
  • Magento Open Source ahora muestra un mensaje de error cuando se configura un dominio de cookie no válido (Store > Configurations > Web > Default Cookie Settings Cookie Domain). Anteriormente, el sitio web dejaba de funcionar. GitHub-35048
  • Magento Open Source ya no genera un error cuando un administrador con roles limitados a un único sitio web añade un producto a Content Elements con PageBuilder. Anteriormente, Magento Open Source generaba un error SQL.
  • Se ha añadido validación a la segunda línea de la dirección en las páginas de edición y creación de direcciones. Ahora se aplican las longitudes mínima y máxima de texto especificadas para la segunda línea.
  • Magento Open Source ya no genera el siguiente error al crear una regla de catálogo en el Admin tras la actualización: A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later.
  • Magento Open Source ya no genera un error al marcar la casilla Check here to link an RSS feed to your Wish List antes de hacer clic en Share Wish list. GitHub-34998
  • El título de la casilla Show Password (formularios Customer Login, Customer Registration, Customer Edit [sección Change Password] y Customer Set New Password) ahora se puede traducir. GitHub-34857
  • Se han actualizado las etiquetas y las descripciones de los comentarios en app/code/Magento/NewRelicReporting/etc/adminhtml/system.xml. GitHub-31947
  • Se han eliminado archivos csp_whitelist.xml innecesarios. GitHub-30607

GraphQL

  • Se ha añadido el atributo price_range que faltaba al tipo BundleItemOption de GraphQL. GitHub-35010
  • La consulta products ya no devuelve atributos como agregación cuando el ajuste de navegación por capas Use in Search Results está desactivado. GitHub-33318
  • Se ha añadido un campo price_including_tax a CartItemPrices. GitHub-29057
  • Los campos new_from_data y new_to_datefields de ProductInterface ya no están obsoletos. GitHub-34783
  • La consulta categories ya no genera una excepción al obtener una lista de categorías en la que una de ellas contiene una imagen que no se encuentra en el sistema de archivos. Anteriormente, Magento Open Source generaba esta excepción: Category image not found. GitHub-34266
  • La consulta products ahora devuelve category_uid como agregación, tal como se espera. GitHub-32557
  • La mutación updateCartItems ahora elimina productos como se espera cuando el stock del producto ha alcanzado la cantidad máxima. GitHub-30220
  • La consulta urlResolver ahora resuelve correctamente el delimitador de ruta (/) cuando varias páginas de inicio tienen el mismo identificador. Anteriormente, la consulta no resolvía el delimitador y devolvía null. GitHub-33615
  • Las consultas customer ahora obtienen como se espera las opciones de selección múltiple de los productos bundle al consultar pedidos. GitHub-34717
  • Las sesiones de Magento Open Source ya no finalizan tras realizar una solicitud GraphQL. Anteriormente, el plugin ClearCustomerSessionAfterRequest cerraba la sesión del comprador. GitHub-34550
  • El rango de precios de los productos configurables en las respuestas de la consulta products ahora se calcula correctamente cuando el ajuste Display Out of Stock Products está activado. Anteriormente, las opciones desactivadas se tenían en cuenta en el cálculo del precio mínimo y máximo.
  • La consulta products ahora devuelve varias categorías correctamente filtradas al ordenar por posición.
  • Las solicitudes setShippingAddressesOnCart ahora validan correctamente los ID de región. Anteriormente, Magento Open Source generaba un error al usar el ID de región en lugar del código de región.
  • Las consultas products ahora devuelven solo las categorías asociadas a la tienda indicada en la solicitud.
  • La consulta categoryList ahora devuelve resultados que reflejan la categoría raíz de la tienda consultada cuando la tienda se especifica en la cabecera. Anteriormente, se incluían en los resultados categorías de la categoría raíz predeterminada aunque se hubiera especificado otra tienda en la cabecera.
  • La consulta products ya no devuelve atributos como agregación cuando el ajuste Use in Search Results Layered Navigation está desactivado. GitHub-33318
  • La consulta cart ahora devuelve un único método de pago para los pedidos gratuitos. Anteriormente, la respuesta de la consulta incluía todos los métodos de pago activos. GitHub-34036
  • Las consultas products ya no devuelven valores de price_range para productos configurables afectados por variantes desactivadas. GitHub-33629
  • Se ha añadido un plugin antes de la llamada a collectQuoteTotals para garantizar que el crédito de tienda no se aplique varias veces.
  • La mutación generateCustomerTokenAsAdmin ahora obtiene los tokens de cliente como se espera. Anteriormente, no se devolvían tokens y se devolvía este error: Customer email provided does not exist.
  • El esquema GraphQL ahora es válido cuando se define un atributo de producto personalizado type. Anteriormente, el esquema no era válido porque el atributo personalizado type sobrescribía el atributo type de los tipos de producto. GitHub-34929
  • Los clientes añadidos o actualizados con las mutaciones createCustomer, createCustomerV2, updateCustomer o updateCustomerV2 ahora se añaden con suscripciones activas al boletín. Anteriormente, los clientes quedaban dados de baja del boletín aunque la solicitud contuviera los parámetros de entrada correctos. GitHub-33599
  • En un despliegue multisitio, la consulta products para una vista de tienda concreta ahora devuelve solo las categorías que pertenecen a la categoría raíz de ese sitio web. Anteriormente, la consulta devolvía categorías de las categorías raíz de otros sitios web. GitHub-34570
  • La consulta products ahora devuelve solo la subcategoría del ID de categoría proporcionado. Anteriormente, devolvía todas las categorías. GitHub-35220
  • La consulta customerOrders ahora responde como se espera cuando se especifica el objeto gift_message en la respuesta pero no existe ningún mensaje de regalo. Anteriormente, la consulta devolvía este mensaje: Can't load gift message for order is returned. GitHub-28957
  • Se ha corregido un error del indexador catalog_category_product que hacía que la consulta products devolviera categorías de otra tienda. GitHub-31253
  • La mutación generateCustomerToken ahora crea como se espera una entrada en customer_log tras generar un token de cliente. GitHub-33378

Google Analytics

  • Se ha añadido al código el módulo Google Tag, que facilita la transición a Google Analytics 4 en julio de 2023. Por ahora puede seguir usando y recopilando datos nuevos en sus propiedades de Google Universal Analytics, pero Google Universal dejará de funcionar en julio de 2023. GitHub-35204, GitHub-35376

Imagen

  • Las imágenes de las páginas de detalles del producto ya no parpadean y permanecen centradas como se espera. Anteriormente, cuando una página de detalles del producto terminaba de cargar una imagen, esta se desplazaba visiblemente hacia abajo.

Importación/exportación

  • La posición de los productos relacionados, de venta adicional (upsell) y de venta cruzada (cross-sell) en el CSV de exportación ahora es correcta tras eliminar desde el Admin un producto de venta cruzada antes de volver a generar el archivo CSV. Anteriormente, las posiciones de los productos de venta cruzada no se recalculaban tras eliminar uno de ellos, y el orden de posiciones era incorrecto.
  • Magento Open Source ahora comprueba si existe una vista personalizada antes de filtrar las columnas al exportar informes. Anteriormente, los informes exportados no tenían en cuenta las vistas personalizadas y las columnas exportadas eran incorrectas.
  • Magento Open Source ahora importa correctamente imágenes con nombres de archivo largos. Anteriormente, Magento Open Source no importaba la imagen y generaba este error: Imported resource (image) could not be downloaded from external resource due to timeout or access permissions in row(s):.
  • Los atributos de ID de categoría ya están disponibles en los filtros de exportación programada.
  • Los productos bundle cuyo título de opción contiene un signo de interrogación (?) ya se pueden importar correctamente gracias a las mejoras en el generador de consultas del método populateExistingOptions. El título de la opción también se muestra correctamente. Anteriormente, tras la importación inicial, las importaciones sucesivas provocaban un comportamiento corrupto y opciones duplicadas, y los compradores tampoco podían añadir el producto al carrito.
  • Se ha añadido validación de los nombres de categoría durante la importación. Anteriormente, Magento Open Source no validaba los nombres de categoría, lo que provocaba errores cuando superaban los 255 caracteres.
  • Los registros existentes en la tabla catalog_url_rewrite_product_category ahora se eliminan antes de insertar los nuevos. Anteriormente, se producía el siguiente error durante la importación de productos en varias tiendas: SQLSTATE[23000]: Integrity constraint violation. GitHub-34210

Infraestructura

  • Se ha eliminado de la lista de plugins un plugin obsoleto de menú contextual.
  • Se ha actualizado la lógica relacionada con la barra de herramientas del editor TinyMCE en el módulo Page Builder, tras la introducción de la lógica delayedRender para la barra de herramientas en TinyMCE.
  • Las condiciones de carrera ya no interrumpen la creación del listener del evento contentUpdated. GitHub-32068
  • La función getTypeID ahora devuelve el ID del tipo de producto y no el ID del producto. GitHub-35458
  • Se ha corregido el mapeo del slider de jQuery UI y de SelectMenu en vendor/magento/module-theme/view/base/requirejs-config.js.

  • Los observers situados en sales_order_state_change_before ahora permiten obtener datos del objeto del pedido. Se ha actualizado el argumento event de sales_order_state_change_before. GitHub-26789

  • Se ha refactorizado indexer:reset para que llame a $indexer->invalidate(). GitHub-34988
  • Ahora puede usar el símbolo de dos puntos en el valor de un atributo htmlClass, lo que permite utilizar componentes adicionales como Tailwind UI. GitHub-34430

Registro (logging)

  • Las acciones sobre clientes, direcciones de clientes y pedidos ahora se registran correctamente en el informe de acciones del Admin. Anteriormente, Magento Open Source no registraba las acciones si no se había especificado el gestor postDispatch en la configuración.

MFTF

Grupos de acciones

Las acciones repetitivas se han sustituido por grupos de acciones en estas pruebas:

AdminConfigurableProductChildrenOutOfStockTest GitHub-32378 AdminCreateStoreViewTest GitHub-34631

Nuevas pruebas

AdminUnlockAdminUserEntityTest GitHub-34836

StorefrontNewsletterSubscriptionWithEnabledNeedToConfirmConfigTest GitHub-33344

Pruebas refactorizadas

AdminCancelTheCreatedOrderWithCashOnDeliveryPaymentMethodTest GitHub-33692

Boletín

  • Los clientes con sesión iniciada ya no aparecen como invitados en Admin > Marketing > Newsletter Subscribers.
  • El correo de confirmación de suscripción al boletín ahora muestra la dirección de correo correcta y específica de la tienda en el campo From si el cliente está asignado a una tienda no predeterminada y se le suscribe o da de baja desde el Admin. Anteriormente, el cliente recibía un correo con la dirección predeterminada en la cabecera From. GitHub-34963
  • La URL de baja de la plantilla de correo del boletín ahora funciona como se espera. GitHub-33310

Pedidos

  • Los datos de los clientes invitados ahora se guardan correctamente tras editar un pedido. Anteriormente, se perdían algunos datos del cliente, como customer_firstname y customer_lastname, x_forwarded_for.
  • Los comerciantes ya no pueden crear una factura rectificativa con una cantidad total decimal cuando Decimal qty está desactivado a nivel de producto o de configuración global. Anteriormente, los comerciantes podían crear una factura rectificativa con una cantidad total decimal cuando no correspondía.
  • El filtro por fecha ahora funciona correctamente en las cuadrículas de facturas, envíos, facturas rectificativas, páginas CMS y bloques CMS cuando la zona horaria configurada en las preferencias difiere de la del ordenador local. Anteriormente, la fecha se interpretaba de forma incorrecta y los resultados filtrados incluían datos fuera del rango de fechas establecido.
  • Magento Open Source ya no cambia las direcciones de correo personalizadas asignadas a los pedidos cuando se modifica la dirección de correo principal del cliente en la página de edición de la cuenta del Admin. Anteriormente, al editar la dirección de correo principal de un cliente, la nueva dirección se asignaba a todos los pedidos creados para ese cliente.