O Magento Open Source introduz melhorias na qualidade da plataforma, nos métodos de pagamento, no desempenho da cache GraphQL e na acessibilidade. Inclui atualizações aos módulos Google integrados.
Esta versão inclui mais de 290 correções de qualidade e melhorias.
As versões podem conter alterações incompatÃveis com versões anteriores (BIC). O Magento Open Source 2.4.5 contém alterações incompatÃveis com versões anteriores. Para rever estas alterações, consulte a referência de BIC. (As principais incompatibilidades são descritas nos destaques de BIC. Nem todas as versões introduzem BIC importantes.)
O Magento Open Source introduz melhorias na qualidade da plataforma, nos métodos de pagamento, no desempenho da cache GraphQL e na acessibilidade. Inclui atualizações aos módulos Google integrados.
Esta versão inclui mais de 290 correções de qualidade e melhorias.
As versões podem conter alterações incompatÃveis com versões anteriores (BIC). O Magento Open Source 2.4.5 contém alterações incompatÃveis com versões anteriores. Para rever estas alterações, consulte a referência de BIC. (As principais incompatibilidades são descritas nos destaques de BIC. Nem todas as versões introduzem BIC importantes.)
Outras informações sobre a versão
Embora o código destas funcionalidades seja incluÃdo nas versões trimestrais do código core do Magento Open Source, vários destes projetos são também lançados de forma independente. As correções de erros destes projetos estão documentadas nas informações de versão especÃficas de cada projeto, disponÃveis na respetiva documentação.
Destaques do Magento Open Source 2.4.5
Encontre os seguintes destaques nesta versão.
Melhorias de segurança
Esta versão inclui 20 correções de segurança e melhorias de segurança da plataforma. Estas correções de segurança foram também aplicadas (backport) ao Magento Open Source 2.4.4-p1 e ao Magento Open Source 2.3.7-p4.
Até à data, não ocorreram ataques confirmados relacionados com estes problemas. No entanto, algumas vulnerabilidades podem potencialmente ser exploradas para aceder a informações de clientes ou assumir o controlo de sessões de administrador. A maioria destes problemas exige que o atacante obtenha primeiro acesso ao Admin. Por isso, recordamos que deve tomar todas as medidas necessárias para proteger o seu Admin, incluindo, entre outras:
- Lista de IPs permitidos (allowlisting)
- autenticação de dois fatores
- utilização de uma VPN
- utilização de um endereço único em vez de
/admin - boas práticas de gestão de palavras-passe
Consulte o Boletim de Segurança da Adobe para a informação mais recente sobre estes problemas corrigidos.
Melhorias de segurança adicionais
As melhorias de segurança desta versão reforçam a conformidade com as mais recentes boas práticas de segurança, incluindo:
-
Foi adicionado suporte de reCAPTCHA aos formulários de partilha da lista de desejos, criação de nova conta de cliente e cartão-presente.
-
Foram adicionados recursos ACL ao Inventory.
-
A segurança dos modelos do Inventory foi reforçada.
-
O filtro
MaliciousCodefoi atualizado para utilizar a bibliotecaHtmlPurifier.
Melhorias da plataforma
O Magento Open Source 2.4.5 suporta agora
-
Composer 2.2
-
TinyMCE (5.10.2). As versões anteriores do TinyMCE (v5.9.2 ou anteriores) permitiam a execução arbitrária de JavaScript quando era atualizado um URL especialmente manipulado ou uma imagem com um URL especialmente manipulado.
-
jQueryUI (1.13.1)
-
PHPStan(^1.5.7 com restrição) GitHub-35315
O esquema de integração DHL foi atualizado da v6.0 para a v6.2. Esta atualização não altera o comportamento do produto.
As bibliotecas JavaScript desatualizadas foram atualizadas para as versões mais recentes e as dependências obsoletas foram removidas. Estas alterações são compatÃveis com versões anteriores.
Atualizações de dependências do Composer
As seguintes dependências do Composer foram atualizadas para as versões mais recentes com restrição:
colinmollenhour/credis(1.13.0)guzzlehttp/guzzle(^7.4.2)laminas/laminas-captcha(atualizado com a restrição ^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)
As dependências laminas/laminas-session, laminas/laminas-text e laminas/laminas-view foram removidas.
Outras atualizações e substituições
-
O esquema de integração DHL foi atualizado da v6.0 para a v6.2.
-
O URL de gateway predefinido para envios USPS foi atualizado para utilizar
httpsem vez dehttp. -
A biblioteca
Froogaloopfoi substituÃda pela biblioteca VimeoPlayer.js(2.16.4). -
A biblioteca
grunt-eslint(NPM) foi atualizada para a versão mais recente. -
As bibliotecas
jQuery Storageforam substituÃdas porjulien-maurel/js-storage. -
As ferramentas de análise estática de código
php-cs-fixerephpcssão agora compatÃveis com PHP 8.x. -
Dependência
glob.js(atualizada com a restrição ~7.2.0) -
Dependência
serve-static.js(atualizada com a restrição ~1.14.2) -
Dependência
underscore.js(NPM) (1.14.2) -
moment-timezone-with-data.js(0.5.34) -
A biblioteca
jquery/jquery-cookiefoi substituÃda porjs-cookie/js-cookie. -
As bibliotecas
jarallax.jsejaralax-video.jsforam atualizadas para utilizar a versão mais recente da Vimeo REST API.
Atualizações de acessibilidade
Esta versão centrou-se em criar uma experiência de loja no Venia (PWA) mais percetÃvel, operável, compreensÃvel e robusta. Estas melhorias incluem:
- O resumo dos resultados de pesquisa é agora anunciado aos utilizadores de leitores de ecrã
- Os leitores de ecrã são agora informados quando é carregada uma nova página
- O contraste e a acessibilidade por teclado foram melhorados
Google Analytics
A Google atualizou os mecanismos de acompanhamento e integração do AdWords e do Analytics em aplicações web através da integração com o GTag. Esta integração das funcionalidades da Google nas páginas do site alarga as possibilidades de acompanhar e gerir conteúdos através dos serviços Google. O Adobe Commerce dispõe de um conjunto de módulos integrados, incluindo Google AdWords, Analytics, Optimizer e TagManager, que utilizavam a API anterior para a integração com os serviços Google. Nesta versão, reimplementámos esta integração utilizando a abordagem GTag.â Consulte Migrar de analytics.js para gtag.js (Universal Analytics).
GraphQL
As melhorias de desempenho do GraphQL incluem:
-
Os programadores e administradores beneficiam de uma reconstrução mais rápida do esquema GraphQL unificado da loja durante a implementação ou ao alterar atributos em produção. Os compradores beneficiam também de tempos de carregamento de página significativamente mais rápidos quando o esquema GraphQL tem de ser reconstruÃdo por qualquer motivo.
-
Foi adicionada a capacidade de consumir a data/hora de expiração do token de autorização através da utilização de JSON Web Tokens (JWT) na API GraphQL.
-
O comando
bin/magento config:set graphql/session/disable 1permite aos comerciantes desativar completamente a criação de cookies de sessão para todas as operações GraphQL. Por predefinição, o Magento Open Source cria estes cookies e depende deles para a autorização, o que afeta o desempenho. A partir de agora, recomendamos a utilização de tokens como única forma de autorização para pedidos GraphQL. Não recomendamos a utilização de cookies de sessão, isoladamente ou em conjunto com tokens de autorização. Consulte Autorização GraphQL. -
Os cookies de sessão são agora iniciados nas operações GraphQL através de proxies de classe apenas quando necessário.
-
A utilização de sessões foi removida dos processadores de cabeçalhos
httpno GraphQL, como loja, cliente ou moeda.
Consulte o Guia do Programador GraphQL para mais detalhes sobre estas melhorias.
Inventory
A segurança dos modelos do Inventory foi reforçada.
Page Builder
O Page Builder v.1.7.2 é compatÃvel com o Magento Open Source 2.4.5.
O layout de colunas do Page Builder inclui estas melhorias:
-
As colunas estão agora expostas, permitindo aos utilizadores controlar as definições das colunas na loja.
-
O redimensionamento das colunas suporta agora a quebra de linha desencadeada por ações do utilizador.
Pagamentos
O Apple Pay está agora disponÃvel para todos os comerciantes com implementações que tenham o Payment Services ativado. Este método de pagamento não exige que os compradores introduzam os dados do cartão de crédito ou de débito. O Apple Pay está disponÃvel na página de detalhes do produto, no mini carrinho, no carrinho de compras e no processo de checkout. Os comerciantes podem ativar esta funcionalidade.
PayPal
-
Os comerciantes em Espanha e Itália podem agora oferecer o PayPal Pay Later aos compradores.
-
As pré-visualizações dos botões PayPal, Credit e Pay Later estão agora disponÃveis no Admin para as páginas de checkout, mini carrinho, carrinho e produto. As pré-visualizações mostram o aspeto destes botões quando estão ativados e apresentados na loja.
Braintree
-
A Braintree descontinuou a integração de proteção contra fraude KOUNT. Esta foi removida do código base do Magento Open Source.
-
A opção Always request 3DS foi adicionada ao Admin.
PWA Studio
O PWA Studio v.12.5.x é compatÃvel com o Magento Open Source 2.4.5.
As novas funcionalidades desta versão incluem:
-
Os dados de comportamento dos compradores são recolhidos na loja PWA Studio para serviços de análise web. Os comerciantes podem agora subscrever e estender estes eventos conforme necessário.
-
Os comerciantes podem agora selecionar um serviço a implementar a partir do Admin (Google Tag Manager).
Para informações sobre melhorias e correções de erros, consulte as versões do PWA Studio. Consulte a Compatibilidade de versões para obter a lista das versões do PWA Studio e das versões core do Magento Open Source compatÃveis.
Problemas corrigidos
Corrigimos centenas de problemas no código core do Magento Open Source 2.4.5.
Instalação, atualização e implementação
- Pode agora mudar o nome de um data patch e adicionar o nome da classe antiga como alias na tabela de base de dados
patch_list. O sistema verifica agora se os aliases do data patch já existiam na base de dados antes de aplicar o patch. Anteriormente, o Magento Open Source gerava um erro nestas condições. - O Magento Open Source já não gera uma exceção quando tenta alterar o URL do Admin para um URL personalizado a partir do Admin. Anteriormente, depois de alterar o URL do Admin, não era possÃvel iniciar sessão. GitHub-35416
- Os comerciantes podem agora atualizar com sucesso uma implementação Magento Open Source 2.4.2 com Klarna para o Magento Open Source 2.4.3. GitHub-33760
- O caminho para o Magento Open Source Analytics já não está fixo no código. Anteriormente, este caminho fixo provocava conflitos quando eram instaladas várias instâncias do Magento Open Source no mesmo servidor. GitHub-29373
Acessibilidade
- O botão Shopping bag fornece agora uma indicação programática ou textual do seu estado. Os utilizadores de leitores de ecrã são informados de que clicar neste botão irá expandir outro conteúdo, ou de que o conteúdo associado está expandido ou recolhido. Anteriormente, este botão não fornecia qualquer indicação programática ou textual do seu estado.
- Os elementos de texto ou imagens de texto da opção de cartão de crédito em Payment Information cumprem agora o rácio mÃnimo de contraste de cor de 4.5:1 exigido pelas WCAG 2.0 para texto normal de 18pt (24px) ou 14pt (19px) em negrito. Anteriormente, não cumpriam o rácio de contraste esperado.
- Os indicadores de foco personalizados de Address book > Communication > Account information oferecem agora um rácio de contraste de pelo menos 3:1 em relação à cor de fundo.
- O texto dos botões Filter e Sort cumpre agora o rácio mÃnimo de contraste de cor de 4.5:1 exigido pelas WCAG 2.0 para texto normal de 18pt (24px) ou 14pt (19px) em negrito. Anteriormente, os botões de navegação dos carrosséis não cumpriam estes requisitos mÃnimos de contraste.
- Os leitores de ecrã anunciam a palavra âVeniaâ apenas uma vez ao navegar para os cabeçalhos e rodapés do Venia. Anteriormente, a mesma palavra era anunciada duas vezes seguidas.
- Os botões que acionam menus pendentes fornecem agora aos leitores de ecrã informação sobre o seu estado expandido ou recolhido e nomes acessÃveis.
- Os utilizadores de leitores de ecrã são informados quando é apresentada uma nova página. Anteriormente, quando o tÃtulo de uma página mudava, essa alteração não era anunciada.
Adobe Stock
- Os utilizadores podem agora terminar sessão no Adobe Stock com sucesso.
Produtos bundle
- Pode agora utilizar o endpoint
PUT /V1/productspara atualizar os atributos de preço de um produto num website especÃfico. Anteriormente, se alguns atributos do produto estivessem substituÃdos numa store view especÃfica, não era possÃvel atualizar um atributo de preço desse produto nessa mesma store view. - O Magento Open Source calcula agora corretamente o total do carrinho para um produto bundle quando é aplicada a regra Product Subselect.
Cache
- A full page cache já não aparece como desativada no Admin quando a cache do Magento Open Source é limpa e
use_stale_cacheestá ativado. - Os marcadores de implementação do New Relic funcionam agora como esperado quando a cache é limpa. GitHub-32649
Carrinho e checkout
- O pop-up de pesquisa de moradas no passo de faturação do checkout já não provoca erros de DOM.
- A mutation
addProductsToCartfunciona agora corretamente com vários produtos. Anteriormente, esta query devolvia o primeiro produto com um subtotal correto, mas devolvia um subtotal de 0 para os restantes produtos. - As exceções de permissão são agora tratadas para produtos restritos adicionados por SKU. Os compradores recebem agora uma mensagem adequada na loja e o campo de quantidade na tabela de erros fica desativado. Anteriormente, o Magento Open Source gerava uma exceção como esta:
There has been an error processing your request. - A query SQL que atualiza as quotes afetadas após a desativação de uma regra de preço do carrinho foi otimizada para evitar o bloqueio de toda a tabela de quotes.
- Os compradores com partilha global de conta já não precisam de voltar a iniciar sessão num website secundário numa implementação multisite quando o checkout como convidado está desativado. Os dados do cliente são agora carregados quando o comprador navega para o subdomÃnio. O comprador já não tem de voltar a iniciar sessão e o conteúdo anterior do carrinho é apresentado.
- Os valores do menu pendente de moradas no checkout já não mudam para os restantes artigos de uma quote quando um artigo de quantidade única é removido num checkout com várias moradas. Anteriormente, quando um produto era removido de uma quote durante um checkout com várias moradas, o valor do menu pendente de moradas passava para o predefinido em todos os produtos.
- A query
cartjá não devolve respostas nulas quando um produto está esgotado. Foi introduzido na resposta um novo elementoerrorscom a mensagem de erro. Anteriormente, quando executava uma query com um produto esgotado, o Magento Open Source apresentava um valornullna secçãoitemsda resposta. Consulte query cart. - Os métodos de envio estão agora disponÃveis como esperado quando um comprador convidado cria uma conta depois de adicionar um produto ao carrinho e antes de avançar para o checkout. Anteriormente, quando um convidado adicionava um produto ao carrinho antes de criar uma conta, não havia métodos de envio disponÃveis durante o checkout. Depois de adicionar outros produtos ao carrinho, os métodos de envio ficavam disponÃveis.
- Os compradores podem agora adicionar produtos ao carrinho quando não está selecionada nenhuma opção no campo Allow Countries.
- O conteúdo do carrinho e o estado da sessão são agora recarregados como esperado após o tempo limite de uma sessão quando Enable Persistence está definido como Yes. GitHub-35182
- Os subtotais do mini carrinho são agora atualizados corretamente quando um comprador navega da página de envio para a página do carrinho no checkout de uma encomenda com várias moradas de envio. Anteriormente, o subtotal era duplicado.
- O mini carrinho apresenta agora os produtos adicionados anteriormente após o tempo limite de uma sessão quando Enable Persistence está ativado . GitHub-35183
- Os comerciantes podem agora criar uma nota de crédito em que Refund Shipping (Incl. Tax) está definido como -0.01 e podem agora definir este valor como 0. Anteriormente, não era possÃvel criar a nota de crédito nestas condições.
Regra de preço do carrinho
- O âmbito de atributo
Parent Onlyé agora utilizado corretamente na condição da regra do carrinho.
Catálogo
- As URL keys dos produtos mantêm-se agora inalteradas ao atualizar o nome do produto através de
PUT /V1/products/para uma store view. Anteriormente, era gerada uma nova URL key com base no novo nome do produto e atribuÃda ao produto, substituindo a URL key nessa store view. - Adicionar um produto a uma categoria a partir do widget de produtos do Page Builder no modo carrossel já não provoca o recarregamento da página.
- Os produtos definidos como Not Visible Individually já não aparecem nos resultados da pesquisa avançada do catálogo.
- Os atributos dinâmicos dos produtos bundle são agora atualizados corretamente na página Mass Attribute Update. Anteriormente, o atributo Dynamic SKU permanecia definido como Yes, mesmo estando desativado na página Mass Update.
- As regras de catálogo são agora aplicadas corretamente através de indexadores incrementais em vez de uma reindexação completa.
- Pode agora alternar com sucesso entre as vistas de lista e de grelha em listas de produtos com várias páginas. Anteriormente, quando navegava para a última página de uma lista de produtos com várias páginas antes de mudar para a vista de grelha, o Magento Open Source apresentava este erro:
Unfortunately there are no products in this category on our website currently. - Os relatórios do Admin Action Log apresentam agora os IDs de produtos atualizados e as informações de estado atualizadas como esperado.
- Os triggers são agora restaurados como esperado na tabela
catalogrule_product_priceapós uma reindexação completa. Anteriormente, os triggers eram removidos da tabelacatalogrule_product_priceapós uma reindexação completa decatalogrule_ruleoucatalogrule_product. - As regras de categoria utilizadas para atribuir produtos a categorias já não mudam aleatoriamente.
- As categorias já não podem ser atualizadas globalmente por um administrador com acesso restrito por âmbito. Anteriormente, quando vários websites utilizavam a mesma categoria mas produtos diferentes, e um administrador com permissões restritas a uma loja alterava os produtos da categoria, a seleção de produtos também mudava nas outras lojas.
- A página de detalhes do produto apresenta agora o preço correto quando é utilizada uma moeda não predefinida para um determinado locale. Anteriormente, os números não eram localizados como esperado na loja.
- A API e a loja apresentam agora a mesma mensagem de erro ao tentar obter os preços por escalão de um produto com registos duplicados. Anteriormente,
PUT /V1/products/tier-pricesdevolvia uma mensagem de erro incorreta. - O Magento Open Source apresenta agora mensagens de erro de validação quando tenta adicionar uma URL key de produto que termina em hÃfen. Está também disponÃvel uma tooltip informativa.
- O novo campo
ConfigurableWishlistItem.configured_variantsubstituiu o campoConfigurableWishlistItem.child_sku. Este último provocava um erro interno quando a lista de desejos de um cliente continha um produto configurável não configurado. - As URL rewrites são agora geradas apenas para as lojas selecionadas durante a atualização em massa de atributos para alterar a visibilidade dos produtos. Anteriormente, a atualização em massa de atributos criava uma URL rewrite para a loja errada.
- Quando a definição
Synchronize widget products with backend storageestá ativada, o Magento Open Source adiciona os dados dos produtos vistos recentemente à tabela de base de dadoscatalog_product_frontend_action. Inclui o ID do cliente ou do visitante ao adicionar registos. A secçãorecently_viewed_productda resposta fica agora vazia se o ID do cliente e o ID do visitante forem nulos. Assim, quando é enviado o pedido Ajaxcustomer/section/load, o Magento Open Source consegue filtrar corretamente os produtos vistos recentemente com base no ID do cliente ou do visitante. Anteriormente, a resposta incluÃa todos os dados disponÃveis na tabela de base de dadoscatalog_product_frontend_action, porque não era verificado se o ID do cliente ou do visitante estava vazio. - Os administradores podem agora alterar as opções de produtos configuráveis no carrinho de um comprador a partir do painel deslizante do Admin. Anteriormente, o painel deslizante não funcionava corretamente.
- A cache de página é agora limpa como esperado para o produto configurável pai quando são guardadas alterações num produto filho. Anteriormente, como a cache não era limpa, as alterações não eram refletidas na página do produto configurável na loja. GitHub-34508
- As listas de produtos são agora apresentadas corretamente no Admin. Anteriormente, a lista de produtos não era apresentada e o Magento Open Source mostrava este erro:
Item (Magento\Catalog\Model\Product\Interceptor) with the same ID "<ID>" already exists. GitHub-33145 - Os preços dos produtos são agora iguais na página de detalhes do produto e na pesquisa da loja em implementações multiloja depois de o Catalogue Price Scope mudar de website para global. Anteriormente, a página de resultados da pesquisa no catálogo apresentava o preço global e a página de detalhes do produto apresentava o preço website. GitHub-34074
- A navegação por camadas apresenta agora como esperado os produtos com os preços mais elevados quando Price Navigation Step Calculation está definido como Manual.
- Pode agora alterar o limite de produtos por página apresentado numa categoria quando Remember Category Pagination está ativado. Anteriormente, o
form_keydo cookie e oform_keyda UI eram diferentes, e o Magento Open Source apresentava este erro:Invalid Form Key. Please refresh the page. - O indexador EAV processa agora os IDs de produto como tipo
intpara evitar possÃveis problemas de desempenho. - à agora gerada com sucesso uma nova cache de produto depois de adicionar a um produto uma nova imagem cujo nome contém â.â, guardar o produto e limpar a cache de imagens. GitHub-32699
-
O Magento Open Source apresenta agora uma mensagem de erro como esperado quando tenta criar um atributo a partir da página do produto sem preencher o campo Admin. GitHub-33099
-
As classificações dos produtos estão agora corretas em todas as listas de produtos do catálogo quando a página inicial contém várias listas de catálogo. GitHub-33867
Produtos configuráveis
- O Magento Open Source apresenta agora o preço correto de um produto configurável com uma opção selecionada depois de alterar a quantidade na página de detalhes do produto. Anteriormente, o preço voltava ao valor inicial após a alteração da quantidade.
- A query
productsobtém agora preços de produtos configuráveis que refletem corretamente a definição de configuração Display Out Of Stock. Anteriormente, a query não devolvia preços corretos. - As opções configuráveis estão agora associadas aos produtos configuráveis criados no Admin através de
POST /V1/configurable-products/configurable1/child. - Os atributos de seleção múltipla são agora guardados corretamente durante a edição do produto. Anteriormente, ao guardar um produto, o Magento Open Source guardava a opção predefinida dos atributos não selecionados, bem como os atributos selecionados.
- O Magento Open Source apresenta agora os atributos configuráveis como esperado durante a criação de atributos
selectglobais através de um script de patch. Anteriormente, os atributos globais elegÃveis ficavam ocultos. -
A mutation
addConfigurableProductsToCartpode agora ser utilizada para adicionar produtos configuráveis com opções personalizadas. Anteriormente, o Magento Open Source gerava este erro: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 -
Pode agora voltar a encomendar produtos configuráveis com opções personalizadas opcionais. Anteriormente, as tentativas de nova encomenda falhavam e era apresentado este erro:
Some of the selected options are not currently available. GitHub-35409 - A mutation
addConfigurableProductsToCartfunciona agora como esperado com vários produtos. Anteriormente, era devolvida informação de produto incorreta ou uma mensagem de erro inválida. GitHub-30948
Cliente
- O Magento Open Source apresenta agora corretamente na loja os atributos de sistema EAV predefinidos, de acordo com a definição do website. Anteriormente, os atributos de cliente ao nÃvel do website que estavam ativados num website e desativados noutro eram apresentados como ativados em ambos.
Produtos descarregáveis
- Pode agora remover links e ficheiros de amostra de um produto descarregável. GitHub-31887
- Os emails emitidos pelo sistema são agora enviados com sucesso para destinatários com â.-â no endereço de email.
- Os clientes recebem agora os lembretes por email sobre os carrinhos abandonados no calendário correto. A nova função SQL
TIMESTAMPDIFF(DAY, ,)substituiu a funçãoTO_DAYS()e calcula a diferença entre os timestamps com base na data e na hora. Anteriormente, os lembretes por email não eram enviados segundo o calendário devido ao cálculo incorreto de dois valores de data e hora: o do abandono do carrinho (em qualquer fuso horário) e o da hora do servidor (UTC). - O Magento Open Source apresenta agora uma mensagem de erro na página de envio quando o cliente introduz um email com formato inválido e clica em Place Order. Anteriormente, a mensagem de erro era apresentada na página de pagamento. [GitHub-33590](https://github.com/magento/magento2/issues/33590
Frameworks
- O comando
bin/magento setup:config:setjá não substitui os prefixos de ID de cache já definidos emapp/etc/env.php. - O comando
bin/magento setup:static-content:deploy -s compactinclui agora, como esperado, os estilos dos temas-filho. Anteriormente, os ficheiros CSS do tema não estavam presentes na loja após o deploy. - Foi adicionado um novo sniff para verificar se são usadas barras de fecho em elementos
void. - O Magento Open Source já não gera um erro SQL depois de atribuir uma nova fonte a um produto e alterar a respetiva quantidade. GitHub-35262
- A ordem de ordenação dos atributos funciona agora conforme especificado no ficheiro
di.xmlapós a atualização. - A função
updateCartCurrencydefine agora uma string em vez de um objeto dentro do objeto do carrinho. Anteriormente, o Magento Open Source não carregava um orçamento através degetQuoteporque a funçãoupdateCartCurrencydefinia um objeto em vez de uma string dentro do objeto do carrinho. GitHub-34199 - Os avisos de descontinuação já não ocorrem nos testes unitários devido a
\DateTimeFormatter::formatObject(). Este método funciona agora como esperado com valores numéricos em$format. - O Magento Open Source já não apresenta um erro
preg_replace()no Admin. O terceiro argumento ($subject) é agora do tipoarray|stringem vez debool. - O método
isFreeShippingdevolve agora um inteiro em vez de um booleano.GitHub-35164 - O Magento Open Source já não gera o seguinte erro quando cria um plugin para qualquer método da classe
vendor/magento/module-backend/Model/Menu.php:Error: Call to undefined method ReflectionUnionType::getName(). GitHub-35292 - O Magento Open Source devolve agora um erro 404 em vez de um erro 500 quando navega para
/checkout/sidebar/updateItemQty/?item_qty=errorna loja. Anteriormente, era gerado este erro:Warning: A non-numeric value encountered in /vendor/magento/module-checkout/Controller/Sidebar/UpdateItemQty.php on line 69. GitHub-34380 - O Magento Open Source já não gera o erro
trim(): Passing null to parameter #1 ($string) of type string is deprecatedquando a ligação AMPQ é configurada sem configuração SSL. - Foi corrigida a definição de base de dados
longblogparalong blob. GitHub-35108 - O texto Knockout que contém plicas é agora traduzÃvel. GitHub-34319
- Um
TypeErroremmagento2/app/code/Magento/Security/Model/AdminSessionsManager.phpfoi corrigido deintparastring. GitHub-34415 .htpasswdfoi adicionado às localizações bloqueadas no ficheiro de configuração donginx. GitHub-35150- O tempo de carregamento das páginas de listagem de produtos das categorias foi melhorado com a adição de
Magento_Ui/js/core/appcomodepsemapp/code/Magento/Ui/view/frontend/requirejs-config.js. GitHub-34847 - O método
ProductRepository.php:getdevolve agora as chaves de cache uma única vez. Anteriormente, eram devolvidas duas vezes. GitHub-34958 - Foi adicionada uma mensagem de erro a uma nova exceção criada no gestor de exceções dos cron jobs. GitHub-34941
- Os ficheiros ReadMe dos módulos
GraphQl-GroupedProductGraphQlforam atualizados. GitHub-34951 - As páginas de impressão de encomendas/faturas/notas de crédito na loja já não apresentam o logótipo Luma predefinido em vez do logótipo definido para o website. GitHub-34942
Correções gerais
- Definir o tamanho máximo da sessão como 0 (Admin Store > Settings > Configuration - Advanced) já não termina a sessão do administrador. GitHub-35312
- As definições de configuração dos atributos de morada do cliente são agora carregadas corretamente com base no website a que o cliente está atribuÃdo, quando adiciona a partir do Admin uma nova morada a um cliente atribuÃdo a um website não predefinido.
- O Magento Open Source já não gera uma exceção quando adiciona um produto bundle através do Page Builder.
- Já é possÃvel criar uma conta de cliente num dispositivo iOS com o apóstrofo inclinado (â) no nome próprio, nome do meio ou apelido. Anteriormente, só era permitido o apóstrofo reto, e a utilização do apóstrofo inclinado predefinido do iOS 11+ resultava no erro
Name is not valid!. - A query
productsdevolve agora informação de produto que reflete com precisão a configuração âShow Related Productsâ. Os camposrelated_products,upsell_productsecrosssell_productsda GraphQL ProductInterface são agora resolvidos de acordo com as configurações Show Related Products, Show Upsell Products e Show Cross-Sell Products, respetivamente. - O atributo Set Product as New From Date apresenta agora a data correta quando o atributo Set Product as New é definido através de uma atualização massiva de produtos. Anteriormente, Set Product as New From Date era apresentado como Jan 1, 1970.
- Os utilizadores com funções restritas já não recebem automaticamente acesso a novos módulos.
- As condições das regras de produtos relacionados funcionam agora como esperado com produtos que contêm atributos
multiselect. - Os comerciantes podem agora adicionar um atributo de preço por escalão (
tier_price) à s comparações de produtos. Anteriormente, a página de comparação de produtos falhava quando a definição Comparable on storefront deste atributo estava ativa. GitHub-35244 - O Magento Open Source apresenta agora uma mensagem de erro quando define um domÃnio de cookie inválido (Store > Configurations > Web > Default Cookie Settings Cookie Domain). Anteriormente, o website falhava. GitHub-35048
- O Magento Open Source já não gera um erro quando um administrador com funções limitadas a um único website adiciona um produto aos Content Elements através do PageBuilder. Anteriormente, o Magento Open Source gerava um erro SQL.
- Foi adicionada validação à segunda linha da morada nas páginas de edição e de adição de moradas. Os comprimentos mÃnimo e máximo de texto definidos para a segunda linha são agora aplicados.
- O Magento Open Source já não gera o seguinte erro durante a criação de uma regra de catálogo no Admin após a atualização:
A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later. - O Magento Open Source já não gera um erro quando ativa a caixa de verificação Check here to link an RSS feed to your Wish List antes de clicar em Share Wish list. GitHub-34998
- O tÃtulo da caixa de verificação Show Password (formulários Customer Login, Customer Registration, Customer Edit (secção Change Password) e Customer Set New Password) é agora traduzÃvel. GitHub-34857
- Foram atualizadas as etiquetas e as descrições dos comentários em
app/code/Magento/NewRelicReporting/etc/adminhtml/system.xml. GitHub-31947 - Foram removidos ficheiros
csp_whitelist.xmldesnecessários. GitHub-30607
GraphQL
- Foi adicionado o atributo em falta
price_rangeao tipo GraphQLBundleItemOption. GitHub-35010 - A query
productsjá não devolve atributos como agregação quando a definição de Layered Navigation Use in Search Results está desativada. GitHub-33318 - Foi adicionado um campo
price_including_taxaCartItemPrices. GitHub-29057 - Os campos
new_from_dataenew_to_datefieldsemProductInterfacejá não estão descontinuados. GitHub-34783 - A query
categoriesjá não gera uma exceção ao obter uma lista de categorias em que uma delas contém uma imagem que não existe no sistema de ficheiros. Anteriormente, o Magento Open Source gerava esta exceção:Category image not found. GitHub-34266 - A query
productsdevolve agoracategory_uidcomo agregação, como esperado. GitHub-32557 - A mutation
updateCartItemsremove agora os produtos como esperado quando o stock do produto atingiu a quantidade máxima. GitHub-30220 - A query
urlResolverresolve agora corretamente o delimitador de caminho (/) quando várias páginas iniciais têm o mesmo identificador. Anteriormente, a query não resolvia o delimitador e devolvia null. GitHub-33615 - As queries
customerobtêm agora, como esperado, as opções de seleção múltipla dos produtos bundle ao consultar encomendas. GitHub-34717 - As sessões do Magento Open Source já não terminam após um pedido GraphQL. Anteriormente, o plugin
ClearCustomerSessionAfterRequestterminava a sessão do cliente. GitHub-34550 - O intervalo de preços dos produtos configuráveis nas respostas da query
productsé agora calculado corretamente quando a definição Display Out of Stock Products está ativa. Anteriormente, as opções desativadas eram consideradas no cálculo dos preços mÃnimo e máximo. - A query
productsdevolve agora várias categorias corretamente filtradas ao ordenar por posição. - Os pedidos
setShippingAddressesOnCartvalidam agora com sucesso os IDs de região. Anteriormente, o Magento Open Source gerava um erro quando se usava o ID da região em vez do código da região. - As queries
productsdevolvem agora apenas as categorias associadas à loja indicada no pedido. - A query
categoryListdevolve agora resultados que refletem a categoria raiz da loja consultada quando a loja é indicada no cabeçalho. Anteriormente, as categorias da categoria raiz predefinida eram incluÃdas nos resultados, mesmo quando outra loja era indicada no cabeçalho. - A query
productsjá não devolve atributos como agregação quando a definição Use in Search Results Layered Navigation está desativada. GitHub-33318 - A query
cartdevolve agora apenas um método de pagamento para encomendas gratuitas. Anteriormente, todos os métodos de pagamento ativos eram devolvidos na resposta. GitHub-34036 - As queries
productsjá não devolvem valores deprice_rangede produtos configuráveis afetados por variantes desativadas. GitHub-33629 - Foi adicionado um plugin antes da chamada
collectQuoteTotalspara garantir que os créditos de loja não são aplicados várias vezes. - A mutation
generateCustomerTokenAsAdminobtém agora os tokens de cliente como esperado. Anteriormente, os tokens não eram devolvidos e era apresentado este erro:Customer email provided does not exist. - O schema GraphQL é agora válido quando é definido um atributo de produto personalizado
type. Anteriormente, o schema era inválido porque o atributotypedos tipos de produto era substituÃdo pelo atributo personalizadotype. GitHub-34929 - Os clientes adicionados ou atualizados com as mutations
createCustomer,createCustomerV2,updateCustomerouupdateCustomerV2são agora adicionados com as subscrições de newsletter ativas. Anteriormente, os clientes eram removidos das newsletters mesmo quando o pedido continha os parâmetros corretos. GitHub-33599 - Numa instalação multi-site, a query
productspara uma store view especÃfica devolve agora apenas as categorias que pertencem à categoria raiz desse website. Anteriormente, a query devolvia categorias das categorias raiz de outros websites. GitHub-34570 - A query
productsdevolve agora apenas a subcategoria do ID de categoria indicado. Anteriormente, devolvia todas as categorias. GitHub-35220 - A query
customerOrdersresponde agora como esperado quando o objetogift_messageé especificado na resposta mas não existe nenhuma mensagem de oferta. Anteriormente, a query devolvia esta mensagem:Can't load gift message for order is returned. GitHub-28957 - Foi corrigido um erro no indexador
catalog_category_productque fazia com que a queryproductsdevolvesse categorias de outra loja. GitHub-31253 - A mutation
generateCustomerTokencria agora, como esperado, uma entrada emcustomer_logdepois de gerar um token de cliente. GitHub-33378
Google Analytics
- O módulo Google Tag foi adicionado ao código-base, suportando a transição para o Google Analytics 4 em julho de 2023. Atualmente pode continuar a usar e a recolher novos dados nas suas propriedades Google Universal Analytics, mas o Google Universal chegará ao fim de vida em julho de 2023. GitHub-35204, GitHub-35376
Imagem
- As imagens nas páginas de detalhe do produto já não tremeluzem e permanecem centradas como esperado. Anteriormente, depois de a página de detalhe do produto terminar de carregar uma imagem, esta deslocava-se visivelmente para baixo.
Importação/exportação
- A posição dos produtos relacionados, de upsell e de cross-sell no CSV de exportação está agora correta depois de eliminar um produto de cross-sell no Admin antes de regenerar o ficheiro CSV. Anteriormente, as posições dos produtos de cross-sell não eram recalculadas após a remoção de um produto de cross-sell, e a ordem das posições ficava incorreta.
- O Magento Open Source verifica agora se existe uma vista personalizada antes de filtrar as colunas ao exportar relatórios. Anteriormente, os relatórios exportados não tinham em conta as vistas personalizadas e as colunas exportadas estavam incorretas.
- O Magento Open Source importa agora com sucesso imagens com nomes de ficheiro longos. Anteriormente, o Magento Open Source não importava a imagem e gerava este erro:
Imported resource (image) could not be downloaded from external resource due to timeout or access permissions in row(s):. - Os atributos de ID de categoria estão agora disponÃveis nos filtros de exportação agendada.
- Os produtos bundle que contêm um ponto de interrogação (?) no tÃtulo da opção podem agora ser importados com sucesso, graças a melhorias no query builder do método
populateExistingOptions. O tÃtulo da opção é também apresentado corretamente. Anteriormente, após a importação inicial, as importações seguintes provocavam um comportamento corrompido e opções duplicadas, e os clientes também não conseguiam adicionar o produto ao carrinho. - Foi adicionada validação dos nomes das categorias durante a importação. Anteriormente, o Magento Open Source não validava os nomes das categorias, o que provocava erros quando estes excediam 255 caracteres.
- Os registos existentes na tabela
catalog_url_rewrite_product_categorysão agora eliminados antes da inserção de novos registos. Anteriormente, ocorria o seguinte erro durante a importação de produtos em várias lojas:SQLSTATE[23000]: Integrity constraint violation. GitHub-34210
Infraestrutura
- Foi removido da lista de plugins um plugin Context Menu descontinuado.
- A lógica relacionada com a barra de ferramentas do editor TinyMCE no módulo Page Builder foi atualizada em consequência da introdução da lógica
delayedRenderpara a barra de ferramentas no TinyMCE. - As race conditions já não interrompem a criação do event listener
contentUpdated. GitHub-32068 - A função
getTypeIDdevolve agora o ID do tipo de produto e não o ID do produto. GitHub-35458 -
O mapeamento do slider jQuery UI e de
SelectMenufoi corrigido emvendor/magento/module-theme/view/base/requirejs-config.js. -
Os observers colocados em
sales_order_state_change_beforesuportam agora a obtenção de dados a partir do objeto da encomenda. O argumentoeventdesales_order_state_change_beforefoi atualizado. GitHub-26789 indexer:resetfoi refatorizado para chamar$indexer->invalidate(). GitHub-34988- Já pode usar o sÃmbolo de dois pontos no valor de um atributo
htmlClass, o que permite utilizar componentes adicionais como o Tailwind UI. GitHub-34430
Registos
- As ações sobre clientes, moradas de clientes e encomendas são agora registadas corretamente no relatório de ações do Admin. Anteriormente, o Magento Open Source não registava as ações se o handler
postDispatchnão estivesse especificado nas definições de configuração.
MFTF
Action groups
As ações repetitivas foram substituÃdas por action groups nestes testes:
AdminConfigurableProductChildrenOutOfStockTest GitHub-32378 AdminCreateStoreViewTest GitHub-34631
Novos testes
AdminUnlockAdminUserEntityTest GitHub-34836
StorefrontNewsletterSubscriptionWithEnabledNeedToConfirmConfigTest GitHub-33344
Testes refatorizados
AdminCancelTheCreatedOrderWithCashOnDeliveryPaymentMethodTest GitHub-33692
Newsletter
- Os clientes com sessão iniciada já não são marcados como visitantes em Admin > Marketing > Newsletter Subscribers.
- O email de confirmação da subscrição da newsletter tem agora o endereço de email correto, especÃfico da loja, no campo From se o cliente estiver atribuÃdo a uma loja não predefinida e for subscrito ou removido a partir do Admin. Anteriormente, o cliente recebia um email com o endereço predefinido no cabeçalho From. GitHub-34963
- O URL de cancelamento da subscrição no template de email da newsletter funciona agora como esperado. GitHub-33310
Encomendas
- Os dados dos clientes visitantes são agora guardados com sucesso depois de uma encomenda ser editada. Anteriormente, perdiam-se alguns dados do cliente, incluindo
customer_firstnameecustomer_lastname, x_forwarded_for. - Os comerciantes já não podem criar uma nota de crédito com uma quantidade total decimal quando Decimal qty está desativado ao nÃvel do produto ou da definição global. Anteriormente, os comerciantes podiam criar uma nota de crédito com quantidade total decimal quando tal não era aplicável.
- O filtro por data funciona agora corretamente nas grelhas de faturas, envios, notas de crédito, páginas CMS e blocos CMS quando o fuso horário definido nas preferências é diferente do fuso horário do computador local. Anteriormente, a data era interpretada incorretamente e os resultados filtrados incluÃam dados fora do intervalo de datas definido.
- O Magento Open Source já não altera os endereços de email personalizados atribuÃdos à s encomendas quando altera o endereço de email principal do cliente na página de edição da conta no Admin. Anteriormente, ao editar o endereço de email principal de um cliente, o novo endereço era atribuÃdo a todas as encomendas criadas para esse cliente.

