Note di rilascio di Magento Open Source 2.4.5

Note di rilascio di Magento Open Source 2.4.5

Magento Open Source introduce miglioramenti alla qualità della piattaforma, ai metodi di pagamento, alle prestazioni della cache GraphQL e all’accessibilità. Include inoltre aggiornamenti ai moduli Google integrati.

Questa release comprende oltre 290 correzioni e miglioramenti della qualità.

Le release possono contenere modifiche non retrocompatibili (BIC). Magento Open Source 2.4.5 contiene modifiche non retrocompatibili. Per esaminarle, consulti il riferimento BIC. (Le principali modifiche non retrocompatibili sono descritte nei punti salienti BIC. Non tutte le release introducono BIC rilevanti.)

Magento Open Source introduce miglioramenti alla qualità della piattaforma, ai metodi di pagamento, alle prestazioni della cache GraphQL e all’accessibilità. Include inoltre aggiornamenti ai moduli Google integrati.

Questa release comprende oltre 290 correzioni e miglioramenti della qualità.

Le release possono contenere modifiche non retrocompatibili (BIC). Magento Open Source 2.4.5 contiene modifiche non retrocompatibili. Per esaminarle, consulti il riferimento BIC. (Le principali modifiche non retrocompatibili sono descritte nei punti salienti BIC. Non tutte le release introducono BIC rilevanti.)

Altre informazioni sulla release

Sebbene il codice di queste funzionalità sia incluso nelle release trimestrali del codice core di Magento Open Source, diversi di questi progetti vengono rilasciati anche in modo indipendente. Le correzioni di bug di questi progetti sono documentate nelle informazioni di rilascio specifiche di ciascun progetto, disponibili nella relativa documentazione.

Punti salienti di Magento Open Source 2.4.5

Ecco le principali novità di questa release.

Miglioramenti della sicurezza

Questa release include 20 correzioni di sicurezza e miglioramenti della sicurezza della piattaforma. Queste correzioni sono state riportate anche in Magento Open Source 2.4.4-p1 e Magento Open Source 2.3.7-p4.

Ad oggi non si sono verificati attacchi confermati legati a questi problemi. Tuttavia, alcune vulnerabilità potrebbero essere sfruttate per accedere ai dati dei clienti o prendere il controllo delle sessioni degli amministratori. La maggior parte di questi problemi richiede che l’attaccante ottenga prima l’accesso all’Admin. Per questo motivo ricordiamo di adottare tutte le misure necessarie per proteggere l’Admin, tra cui, a titolo esemplificativo:

  • Allowlist degli indirizzi IP
  • autenticazione a due fattori
  • utilizzo di una VPN
  • utilizzo di un percorso univoco anziché /admin
  • buone pratiche nella gestione delle password

Consulti l’Adobe Security Bulletin per gli ultimi aggiornamenti su questi problemi risolti.

Ulteriori miglioramenti della sicurezza

I miglioramenti della sicurezza di questa release aumentano la conformità alle più recenti best practice di sicurezza, tra cui:

  • È stato aggiunto il supporto reCAPTCHA ai moduli Condivisione lista dei desideri, Creazione nuovo account cliente e Carta regalo.

  • Sono state aggiunte risorse ACL a Inventory.

  • È stata migliorata la sicurezza dei template di Inventory.

  • Il filtro MaliciousCode è stato aggiornato per utilizzare la libreria HtmlPurifier.

Miglioramenti della piattaforma

Magento Open Source 2.4.5 ora supporta

  • Composer 2.2

  • TinyMCE (5.10.2). Le versioni precedenti di TinyMCE (v5.9.2 o precedenti) consentivano l’esecuzione arbitraria di JavaScript quando veniva aggiornato un URL appositamente costruito o un’immagine con un URL appositamente costruito.

  • jQueryUI (1.13.1)

  • PHPStan (^1.5.7 con vincolo) GitHub-35315

Lo schema dell’integrazione DHL è stato aggiornato dalla v6.0 alla v6.2. Questo aggiornamento non comporta modifiche al comportamento del prodotto.

Le librerie JavaScript obsolete sono state aggiornate alle versioni più recenti e le dipendenze obsolete sono state rimosse. Queste modifiche sono retrocompatibili.

Aggiornamenti delle dipendenze Composer

Le seguenti dipendenze Composer sono state aggiornate alle versioni più recenti con vincolo:

  • colinmollenhour/credis (1.13.0)
  • guzzlehttp/guzzle (^7.4.2)
  • laminas/laminas-captcha (aggiornata con vincolo ^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)

Le dipendenze laminas/laminas-session, laminas/laminas-text e laminas/laminas-view sono state rimosse.

Altri aggiornamenti e sostituzioni

  • Lo schema dell’integrazione DHL è stato aggiornato dalla v6.0 alla v6.2.

  • L’URL del gateway predefinito per le spedizioni USPS è stato aggiornato per utilizzare https anziché http.

  • La libreria Froogaloop è stata sostituita dalla libreria Vimeo Player.js (2.16.4).

  • La libreria grunt-eslint (NPM) è stata aggiornata all’ultima versione.

  • Le librerie jQuery Storage sono state sostituite da julien-maurel/js-storage.

  • Gli strumenti di analisi statica del codice php-cs-fixer e phpcs sono ora compatibili con PHP 8.x.

  • Dipendenza glob.js (aggiornata con vincolo a ~7.2.0)

  • Dipendenza serve-static.js (aggiornata con vincolo ~1.14.2)

  • Dipendenza underscore.js (NPM) (1.14.2)

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

  • La libreria jquery/jquery-cookie è stata sostituita da js-cookie/js-cookie.

  • Le librerie jarallax.js e jaralax-video.js sono state aggiornate per utilizzare l’ultima versione della REST API di Vimeo.

Aggiornamenti dell’accessibilità

Questa release si è concentrata sulla creazione di un’esperienza storefront su Venia (PWA) più percepibile, utilizzabile, comprensibile e robusta. Questi miglioramenti includono:

  • Le informazioni di riepilogo dei risultati di ricerca vengono ora annunciate agli utenti di screen reader
  • Gli screen reader vengono ora informati quando si carica una nuova visualizzazione di pagina
  • Sono stati migliorati il contrasto e l’accessibilità da tastiera

Google Analytics

Google ha aggiornato i meccanismi di tracciamento e integrazione di AdWords e Analytics nelle applicazioni web tramite l’integrazione con GTag. Questa integrazione delle funzionalità Google nelle pagine del sito amplia le possibilità di tracciare e gestire i contenuti tramite i servizi Google. Adobe Commerce dispone di una serie di moduli integrati, tra cui Google AdWords, Analytics, Optimizer e TagManager, che sfruttano la precedente API per l’integrazione con i servizi Google. In questa release abbiamo reimplementato questa integrazione con l’approccio GTag.​ Consulti Migrare da analytics.js a gtag.js (Universal Analytics).

GraphQL

I miglioramenti delle prestazioni di GraphQL includono:

  • Sviluppatori e amministratori beneficiano di una ricostruzione più rapida dello schema GraphQL unificato dello storefront durante il deploy o quando si modificano gli attributi in produzione. Anche gli acquirenti ottengono tempi di caricamento delle pagine sensibilmente più rapidi quando lo schema GraphQL deve essere ricostruito per qualsiasi motivo.

  • È stata aggiunta la possibilità di utilizzare la data/ora di scadenza del token di autorizzazione tramite i JSON Web Token (JWT) nella GraphQL API.

  • Il comando bin/magento config:set graphql/session/disable 1 consente ai merchant di disattivare completamente la creazione di cookie di sessione per tutte le operazioni GraphQL. Per impostazione predefinita, Magento Open Source crea questi cookie e li utilizza per l’autorizzazione, con un impatto sulle prestazioni. D’ora in poi consigliamo di utilizzare i token come unica forma di autorizzazione per le richieste GraphQL. Sconsigliamo l’uso dei cookie di sessione da soli o insieme ai token di autorizzazione. Consulti Autorizzazione GraphQL.

  • I cookie di sessione vengono ora avviati nelle operazioni GraphQL tramite proxy di classe solo quando necessario.

  • L’uso della sessione è stato rimosso dai processori di header http di GraphQL, come store, cliente o valuta.

Per i dettagli su questi miglioramenti consulti la GraphQL Developer Guide.

Inventory

È stata migliorata la sicurezza dei template di Inventory.

Page Builder

Page Builder v.1.7.2 è compatibile con Magento Open Source 2.4.5.

Il layout a colonne di Page Builder include questi miglioramenti:

  • Le colonne sono ora esposte e consentono agli utenti di controllarne le impostazioni sullo storefront.

  • Il ridimensionamento delle colonne ora supporta il ritorno a capo attivato dalle azioni dell’utente.

Pagamenti

Apple Pay è ora disponibile per tutti i merchant con deployment in cui è attivo Payment Services. Questo metodo di pagamento non richiede agli acquirenti di inserire i dati della carta di credito o di debito. Apple Pay è disponibile nella pagina di dettaglio del prodotto, nel mini carrello, nel carrello e nel flusso di checkout. I merchant possono attivare questa funzionalità.

PayPal

  • I merchant in Spagna e Italia possono ora offrire PayPal Paga in 3 rate (Pay Later) ai propri acquirenti.

  • Le anteprime dei pulsanti PayPal, Credit e Pay Later sono ora disponibili nell’Admin per le pagine di checkout, mini carrello, carrello e prodotto. Le anteprime mostrano l’aspetto di questi pulsanti quando sono attivati e visualizzati sullo storefront.

Braintree

  • Braintree ha dismesso l’integrazione antifrode KOUNT, che è stata rimossa dal codice di Magento Open Source.

  • Nell’Admin è stata aggiunta l’opzione Always request 3DS.

PWA Studio

PWA Studio v.12.5.x è compatibile con Magento Open Source 2.4.5.

Le nuove funzionalità di questa release includono:

  • I dati sul comportamento degli acquirenti vengono raccolti sullo storefront PWA Studio per i servizi di web analytics. I merchant possono ora sottoscrivere ed estendere questi eventi secondo le proprie esigenze.

  • I merchant possono ora selezionare dall’Admin un servizio da attivare (Google Tag Manager).

Per informazioni su miglioramenti e correzioni di bug, consulti le release di PWA Studio. Consulti Compatibilità delle versioni per l’elenco delle versioni di PWA Studio e delle versioni core di Magento Open Source compatibili.

Problemi risolti

Abbiamo risolto centinaia di problemi nel codice core di Magento Open Source 2.4.5.

Installazione, aggiornamento, deploy

  • Ora è possibile rinominare una data patch e aggiungere il vecchio nome della classe come alias nella tabella del database patch_list. Prima di applicare la patch viene ora verificato se gli alias della data patch esistono già nel database. In precedenza, in queste condizioni Magento Open Source generava un errore.
  • Magento Open Source non genera più un’eccezione quando si tenta di cambiare dall’Admin l’URL dell’Admin con un URL personalizzato. In precedenza, dopo aver cambiato l’URL dell’Admin non era possibile effettuare l’accesso. GitHub-35416
  • I merchant possono ora aggiornare correttamente un deployment Magento Open Source 2.4.2 con Klarna a Magento Open Source 2.4.3. GitHub-33760
  • Il percorso di Magento Open Source Analytics non è più codificato in modo fisso. In precedenza, questo percorso fisso causava conflitti quando più istanze di Magento Open Source erano installate sullo stesso server. GitHub-29373

Accessibilità

  • Il pulsante Shopping bag fornisce ora un’indicazione programmatica o testuale del proprio stato. Gli utenti di screen reader vengono informati che facendo clic sul pulsante si espandono altri contenuti, oppure che il contenuto associato è espanso o compresso. In precedenza, il pulsante non forniva alcuna indicazione programmatica o testuale del proprio stato.
  • Gli elementi di testo o le immagini di testo delle opzioni della carta di credito in Informazioni di pagamento rispettano ora il rapporto di contrasto minimo richiesto da WCAG 2.0 di 4,5:1 per il testo standard di 18pt (24px) o di 14pt (19px) se in grassetto. In precedenza non rispettavano il rapporto di contrasto previsto.
  • Gli indicatori di focus personalizzati di Address book > Communication > Account information offrono ora un rapporto di contrasto di almeno 3:1 rispetto al colore di sfondo.
  • Il testo dei pulsanti Filter e Sort rispetta ora il rapporto di contrasto minimo richiesto da WCAG 2.0 di 4,5:1 per il testo standard di 18pt (24px) o di 14pt (19px) se in grassetto. In precedenza, i pulsanti di navigazione dei caroselli non rispettavano questi requisiti minimi di contrasto.
  • Gli screen reader annunciano la parola “Venia” una sola volta quando si naviga verso header e footer di Venia. In precedenza, la stessa parola veniva annunciata due volte di seguito.
  • I pulsanti che aprono menu a tendina forniscono ora agli screen reader informazioni sul loro stato espanso o compresso e nomi accessibili.
  • Gli utenti di screen reader vengono informati quando viene visualizzata una nuova pagina. In precedenza, il cambio del titolo della pagina non veniva annunciato.

Adobe Stock

  • Gli utenti possono ora disconnettersi correttamente da Adobe Stock.

Prodotti bundle

  • Ora è possibile utilizzare l’endpoint PUT /V1/products per aggiornare gli attributi di prezzo del prodotto per un sito web specifico. In precedenza, se alcuni attributi del prodotto erano sovrascritti per una determinata store view, non era possibile aggiornare un attributo di prezzo di quel prodotto nella stessa store view.
  • Magento Open Source calcola ora correttamente il totale del carrello per un prodotto bundle quando viene applicata la regola Product Subselect.

Cache

  • La full page cache non viene più mostrata come disattivata nell’Admin quando la cache di Magento Open Source viene svuotata e use_stale_cache è attivo.
  • I marker di deployment di New Relic funzionano ora come previsto quando la cache viene svuotata. GitHub-32649

Carrello e checkout

  • Il pop-up di ricerca dell’indirizzo nella fase di fatturazione del checkout non causa più errori DOM.
  • La mutation addProductsToCart funziona ora correttamente con più prodotti. In precedenza, questa query restituiva il primo prodotto con un subtotale corretto, ma un subtotale pari a 0 per gli altri prodotti.
  • Le eccezioni di autorizzazione vengono ora gestite per i prodotti con restrizioni aggiunti tramite SKU. Gli acquirenti ricevono ora un messaggio adeguato sullo storefront e il campo quantità nella tabella degli errori è disattivato. In precedenza, Magento Open Source generava un’eccezione come questa: There has been an error processing your request.
  • La query SQL che aggiorna le quote interessate dopo la disattivazione di una regola di prezzo del carrello è stata ottimizzata per evitare il blocco dell’intera tabella delle quote.
  • Gli acquirenti con condivisione globale dell’account non devono più effettuare nuovamente l’accesso a un sito web secondario in un deployment multi-sito quando il checkout come ospite è disattivato. I dati del cliente vengono ora caricati quando l’acquirente passa al sottodominio, senza richiedere un nuovo accesso, e viene mostrato il contenuto precedente del carrello.
  • Nel checkout con più indirizzi, i valori del menu a tendina degli indirizzi non cambiano più per gli articoli rimanenti di una quote quando viene rimosso un articolo con quantità singola. In precedenza, quando un prodotto veniva rimosso da una quote durante il checkout con più indirizzi, il valore del menu a tendina tornava a quello predefinito per tutti i prodotti.
  • La query cart non restituisce più risposte null quando un prodotto è esaurito. Nella risposta è stato introdotto un nuovo elemento errors contenente il messaggio di errore. In precedenza, eseguendo una query con un prodotto esaurito, Magento Open Source mostrava un valore null nella sezione items della risposta. Consulti query cart.
  • I metodi di spedizione sono ora disponibili come previsto quando un acquirente ospite crea un account dopo aver aggiunto un prodotto al carrello e prima di procedere al checkout. In precedenza, se un ospite aggiungeva un prodotto al carrello prima di creare un account, durante il checkout non era disponibile alcun metodo di spedizione; i metodi diventavano disponibili solo dopo aver aggiunto altri prodotti.
  • Gli acquirenti possono ora aggiungere prodotti al carrello anche quando nel campo Allow Countries non è selezionata alcuna opzione.
  • Il contenuto del carrello e lo stato di accesso vengono ora ricaricati come previsto dopo la scadenza della sessione quando Enable Persistence è impostato su Yes. GitHub-35182
  • I subtotali del mini carrello vengono ora aggiornati correttamente quando un acquirente passa dalla pagina di spedizione alla pagina del carrello nel checkout di un ordine con più indirizzi di spedizione. In precedenza il subtotale veniva raddoppiato.
  • Il mini carrello mostra ora i prodotti aggiunti in precedenza dopo la scadenza della sessione quando Enable Persistence è attivo. GitHub-35183
  • I merchant possono ora creare una nota di credito in cui Refund Shipping (Incl. Tax) è impostato su -0.01 e possono impostare questo importo su 0. In precedenza, in queste condizioni non era possibile creare la nota di credito.

Regola di prezzo del carrello

  • L’ambito dell’attributo Parent Only viene ora utilizzato correttamente nella condizione della regola del carrello.

Catalogo

  • Le URL key dei prodotti restano ora invariate quando si aggiorna il nome del prodotto tramite PUT /V1/products/ per una store view. In precedenza veniva generata una nuova URL key basata sul nuovo nome e assegnata al prodotto, sovrascrivendo l’URL key di quella store view.
  • L’aggiunta di un prodotto a una categoria dal widget prodotti di Page Builder in modalità carosello non provoca più il ricaricamento della pagina.
  • I prodotti impostati su Not Visible Individually non compaiono più nei risultati della Ricerca avanzata del catalogo.
  • Gli attributi dinamici dei bundle vengono ora aggiornati correttamente nella pagina di aggiornamento massivo degli attributi. In precedenza l’attributo Dynamic SKU restava impostato su Yes anche se era stato disattivato nella pagina di aggiornamento massivo.
  • Le regole del catalogo vengono ora applicate correttamente tramite indicizzatori incrementali anziché con una reindicizzazione completa.
  • Ora è possibile passare correttamente dalla vista elenco alla vista griglia negli elenchi di prodotti su più pagine. In precedenza, se si passava all’ultima pagina della vista elenco prima di passare alla vista griglia, Magento Open Source mostrava questo errore: Unfortunately there are no products in this category on our website currently.
  • I report Admin Action Log mostrano ora come previsto gli ID prodotto aggiornati e le informazioni di stato aggiornate.
  • I trigger vengono ora ripristinati come previsto nella tabella catalogrule_product_price dopo una reindicizzazione completa. In precedenza i trigger venivano rimossi dalla tabella catalogrule_product_price dopo una reindicizzazione completa di catalogrule_rule o catalogrule_product.
  • Le regole di categoria utilizzate per assegnare i prodotti alle categorie non cambiano più in modo casuale.
  • Le categorie non possono più essere aggiornate globalmente da un amministratore con accesso limitato a un ambito. In precedenza, quando più siti web utilizzavano la stessa categoria ma prodotti diversi e un amministratore con permessi limitati a uno store modificava i prodotti della categoria, la selezione dei prodotti cambiava anche per gli altri store.
  • La pagina di dettaglio del prodotto mostra ora il prezzo corretto quando si utilizza una valuta non predefinita per una determinata localizzazione. In precedenza i numeri non venivano localizzati come previsto sullo storefront.
  • L’API e lo storefront mostrano ora lo stesso messaggio di errore quando si tenta di recuperare i prezzi a scaglioni di un prodotto con record duplicati. In precedenza PUT /V1/products/tier-prices restituiva un messaggio di errore errato.
  • Magento Open Source fornisce ora messaggi di errore di validazione quando si tenta di aggiungere una URL key di prodotto con un trattino finale. È disponibile anche un testo informativo nel tooltip.
  • Il nuovo campo ConfigurableWishlistItem.configured_variant ha sostituito il campo ConfigurableWishlistItem.child_sku, che generava un errore interno quando la lista dei desideri di un cliente conteneva un prodotto configurabile non configurato.
  • Durante l’aggiornamento massivo degli attributi per modificare la visibilità dei prodotti, le URL rewrite vengono ora generate solo per gli store selezionati. In precedenza l’aggiornamento massivo creava una URL rewrite per lo store sbagliato.
  • Quando l’impostazione Synchronize widget products with backend storage è attiva, Magento Open Source aggiunge i dati dei prodotti visti di recente nella tabella del database catalog_product_frontend_action, includendo l’ID del cliente o del visitatore. La sezione recently_viewed_product della risposta è ora vuota se l’ID cliente e l’ID visitatore sono null. Di conseguenza, quando viene inviata la richiesta Ajax customer/section/load, Magento Open Source può filtrare correttamente i prodotti visti di recente in base all’ID cliente o visitatore. In precedenza la risposta includeva tutti i dati disponibili nella tabella catalog_product_frontend_action, perché non veniva verificata l’assenza di un ID cliente o visitatore.
  • Gli amministratori possono ora modificare dal pannello laterale dell’Admin le opzioni dei prodotti configurabili nel carrello di un acquirente. In precedenza il pannello laterale non funzionava correttamente.
  • La cache di pagina viene ora svuotata come previsto per il prodotto configurabile padre quando si salvano le modifiche a un prodotto figlio. In precedenza, poiché la cache non veniva svuotata, le modifiche non comparivano nella pagina del prodotto configurabile sullo storefront. GitHub-34508
  • Gli elenchi di prodotti vengono ora visualizzati correttamente nell’Admin. In precedenza l’elenco non veniva visualizzato e Magento Open Source mostrava questo errore: Item (Magento\Catalog\Model\Product\Interceptor) with the same ID "<ID>" already exists. GitHub-33145
  • Nei deployment multi-store, i prezzi dei prodotti sono ora identici nella pagina di dettaglio e nella ricerca dello storefront dopo aver cambiato il Catalog Price Scope da website a global. In precedenza la pagina dei risultati di ricerca mostrava il prezzo global e la pagina di dettaglio il prezzo website. GitHub-34074
  • La navigazione a livelli mostra ora come previsto i prodotti con i prezzi più alti quando Price Navigation Step Calculation è impostato su Manual.
  • Ora è possibile modificare il numero di prodotti per pagina visualizzati in una categoria quando Remember Category Pagination è attivo. In precedenza il form_key del cookie e il form_key dell’interfaccia erano diversi e Magento Open Source mostrava questo errore: Invalid Form Key. Please refresh the page.
  • L’indicizzatore EAV elabora ora gli ID prodotto come tipo int per evitare possibili problemi di prestazioni.
  • Una nuova cache del prodotto viene ora generata correttamente dopo aver aggiunto a un prodotto una nuova immagine con un nome contenente ‘.’, salvato il prodotto e svuotato la cache delle immagini. GitHub-32699
  • Magento Open Source mostra ora come previsto un messaggio di errore quando si tenta di creare un attributo dalla pagina prodotto senza compilare il campo Admin. GitHub-33099

  • Le valutazioni dei prodotti sono ora corrette in tutti gli elenchi di prodotti del catalogo quando la home page contiene più elenchi. GitHub-33867

Prodotti configurabili

  • Magento Open Source mostra ora il prezzo corretto di un prodotto configurabile con un’opzione selezionata dopo averne modificato la quantità nella pagina di dettaglio. In precedenza, dopo la modifica della quantità, il prezzo tornava al valore iniziale.
  • La query products recupera ora per i prodotti configurabili prezzi che rispecchiano correttamente l’impostazione Display Out Of Stock. In precedenza la query non restituiva prezzi accurati.
  • Le opzioni configurabili sono ora collegate ai prodotti configurabili creati nell’Admin tramite POST /V1/configurable-products/configurable1/child.
  • Gli attributi a selezione multipla vengono ora salvati correttamente durante la modifica del prodotto. In precedenza, al salvataggio di un prodotto, Magento Open Source salvava l’opzione predefinita sia per gli attributi non selezionati sia per quelli selezionati.
  • Magento Open Source mostra ora come previsto gli attributi configurabili durante la creazione di attributi globali select tramite uno script di patch. In precedenza gli attributi globali idonei erano nascosti.
  • La mutation addConfigurableProductsToCart può ora essere utilizzata per aggiungere prodotti configurabili con opzioni personalizzate. In precedenza Magento Open Source generava questo errore: 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

  • Ora è possibile riordinare prodotti configurabili con opzioni personalizzate facoltative. In precedenza i tentativi di riordino non andavano a buon fine e veniva mostrato questo errore: Some of the selected options are not currently available. GitHub-35409

  • La mutation addConfigurableProductsToCart funziona ora come previsto con più prodotti. In precedenza venivano restituite informazioni di prodotto errate o un messaggio di errore non valido. GitHub-30948

Cliente

  • Magento Open Source mostra ora correttamente sullo storefront gli attributi di sistema EAV predefiniti in base all’impostazione del sito web. In precedenza, gli attributi cliente a livello di sito web attivati per un sito e disattivati per un altro risultavano attivi per entrambi.

Prodotti scaricabili

  • Ora è possibile rimuovere link e file di esempio da un prodotto scaricabile. GitHub-31887

Email

  • Le email di sistema vengono ora inviate correttamente ai destinatari con “.-“ nel proprio indirizzo email.
  • I clienti ricevono ora i promemoria via email relativi ai carrelli abbandonati secondo la pianificazione corretta. La nuova funzione SQL TIMESTAMPDIFF(DAY, ,) ha sostituito la funzione TO_DAYS() e calcola la differenza tra i timestamp in base a data e ora. In precedenza i promemoria non venivano inviati secondo la pianificazione a causa del calcolo errato tra due valori data-ora: l’abbandono del carrello (qualsiasi fuso orario) e l’ora del server (UTC).
  • Magento Open Source mostra ora un messaggio di errore nella pagina Spedizione quando un acquirente inserisce un indirizzo email in formato non valido e fa clic su Place Order. In precedenza il messaggio di errore veniva mostrato nella pagina Pagamento. [GitHub-33590](https://github.com/magento/magento2/issues/33590

Framework

  • Il comando bin/magento setup:config:set non sovrascrive più i prefissi degli ID di cache già impostati in app/etc/env.php.
  • Il comando bin/magento setup:static-content:deploy -s compact include ora come previsto gli stili dei temi figli. In precedenza, dopo il deploy, i file CSS del tema non erano presenti sullo storefront.
  • È stato aggiunto un nuovo sniff per verificare se negli elementi void vengono utilizzate barre di chiusura.
  • Magento Open Source non genera più un errore SQL dopo aver assegnato una nuova source a un prodotto e averne modificato la quantità. GitHub-35262
  • Dopo l’aggiornamento, l’ordinamento degli attributi funziona ora come specificato nel file di.xml.
  • La funzione updateCartCurrency imposta ora una stringa anziché un oggetto all’interno dell’oggetto carrello. In precedenza Magento Open Source non caricava una quote tramite getQuote perché la funzione updateCartCurrency impostava un oggetto anziché una stringa all’interno dell’oggetto carrello. GitHub-34199
  • Nei test unitari non compaiono più avvisi di deprecazione dovuti a\DateTimeFormatter::formatObject(). Questo metodo funziona ora come previsto con valori numerici per $format.
  • Magento Open Source non mostra più un errore preg_replace() nell’Admin. Il terzo argomento ($subject) è ora di tipo array|string anziché bool.
  • Il metodo isFreeShipping restituisce ora un intero anziché un booleano.GitHub-35164
  • Magento Open Source non genera più il seguente errore quando si crea un plugin per un qualsiasi metodo della classe vendor/magento/module-backend/Model/Menu.php: Error: Call to undefined method ReflectionUnionType::getName(). GitHub-35292
  • Magento Open Source restituisce ora un errore 404 anziché 500 quando si visita /checkout/sidebar/updateItemQty/?item_qty=error sullo storefront. In precedenza veniva generato questo errore: Warning: A non-numeric value encountered in /vendor/magento/module-checkout/Controller/Sidebar/UpdateItemQty.php on line 69. GitHub-34380
  • Magento Open Source non genera più l’errore trim(): Passing null to parameter #1 ($string) of type string is deprecated quando la connessione AMPQ è configurata senza SSL.
  • La definizione del database longblog è stata corretta in long blob. GitHub-35108
  • I testi Knockout contenenti apici singoli sono ora traducibili. GitHub-34319
  • Un TypeError in magento2/app/code/Magento/Security/Model/AdminSessionsManager.php è stato corretto da int a string. GitHub-34415
  • .htpasswd è stato aggiunto ai percorsi vietati nel file di configurazione di nginx. GitHub-35150
  • I tempi di caricamento delle pagine elenco prodotti delle categorie sono stati migliorati aggiungendo Magento_Ui/js/core/app come deps in app/code/Magento/Ui/view/frontend/requirejs-config.js. GitHub-34847
  • Il metodo ProductRepository.php:get restituisce ora le chiavi di cache una sola volta. In precedenza venivano restituite due volte. GitHub-34958
  • È stato aggiunto un messaggio di errore a una nuova eccezione creata nel gestore delle eccezioni per i cron job. GitHub-34941
  • I file ReadMe dei moduli GraphQl-GroupedProductGraphQl sono stati aggiornati. GitHub-34951
  • Le pagine di stampa di ordine/fattura/nota di credito sullo storefront non mostrano più il logo Luma predefinito al posto del logo impostato per il sito web. GitHub-34942

Correzioni generali

  • L’impostazione della dimensione massima della sessione a 0 (Admin Store > Settings > Configuration - Advanced) non disconnette più l’amministratore. GitHub-35312
  • Le impostazioni di configurazione degli attributi dell’indirizzo cliente vengono ora caricate correttamente in base al sito web a cui è assegnato il cliente quando si aggiunge dall’Admin un nuovo indirizzo a un cliente assegnato a un sito web non predefinito.
  • Magento Open Source non genera più un’eccezione quando si aggiunge un prodotto bundle tramite Page Builder.
  • Ora è possibile creare un account cliente da un dispositivo iOS utilizzando l’apostrofo inclinato (’) nel nome, secondo nome o cognome. In precedenza era consentito solo l’apostrofo dritto e l’uso dell’apostrofo inclinato predefinito di iOS 11+ generava l’errore Name is not valid!.
  • La query products restituisce ora informazioni sui prodotti che rispecchiano correttamente la configurazione “Show Related Products”. I campi related_products, upsell_products e crosssell_products della ProductInterface GraphQL vengono ora risolti rispettivamente in base alle configurazioni Show Related Products, Show Upsell Products e Show Cross-Sell Products.
  • L’attributo Set Product as New From Date mostra ora la data corretta quando l’attributo Set Product as New viene impostato tramite un aggiornamento massivo dei prodotti. In precedenza Set Product as New From Date veniva mostrato come Jan 1, 1970.
  • Agli utenti con ruoli limitati non viene più concesso automaticamente l’accesso ai nuovi moduli.
  • Le condizioni delle regole dei prodotti correlati funzionano ora come previsto con prodotti che contengono attributi multiselect.
  • I merchant possono ora aggiungere un attributo di prezzo a scaglioni (tier_price) al confronto prodotti. In precedenza la pagina di confronto prodotti andava in crash quando per questo attributo era attiva l’impostazione Comparable on storefront. GitHub-35244
  • Magento Open Source mostra ora un messaggio di errore quando si imposta un dominio dei cookie non valido (Store > Configurations > Web > Default Cookie Settings Cookie Domain). In precedenza il sito web andava in crash. GitHub-35048
  • Magento Open Source non genera più un errore quando un amministratore con ruoli limitati a un solo sito web aggiunge un prodotto agli Elementi di contenuto tramite PageBuilder. In precedenza Magento Open Source generava un errore SQL.
  • È stata aggiunta la validazione alla seconda riga dell’indirizzo nelle pagine di modifica e aggiunta indirizzo. Le lunghezze minima e massima del testo specificate per la seconda riga vengono ora applicate.
  • Dopo l’aggiornamento, Magento Open Source non genera più il seguente errore durante la creazione di una regola di catalogo nell’Admin: 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 non genera più un errore quando si attiva la casella Check here to link an RSS feed to your Wish List prima di fare clic su Share Wish list. GitHub-34998
  • Il titolo della casella Show Password (moduli Accesso cliente, Registrazione cliente, Modifica cliente – sezione Cambia password – e Imposta nuova password) è ora traducibile. GitHub-34857
  • Sono state aggiornate le etichette e le descrizioni dei commenti in app/code/Magento/NewRelicReporting/etc/adminhtml/system.xml. GitHub-31947
  • Sono stati rimossi i file csp_whitelist.xml non necessari. GitHub-30607

GraphQL

  • L’attributo mancante price_range è stato aggiunto al tipo GraphQL BundleItemOption. GitHub-35010
  • La query products non restituisce più gli attributi come aggregazione quando l’impostazione di navigazione a livelli Use in Search Results è disattivata. GitHub-33318
  • È stato aggiunto il campo price_including_tax a CartItemPrices. GitHub-29057
  • I campi new_from_data e new_to_datefields in ProductInterface non sono più deprecati. GitHub-34783
  • La query categories non genera più un’eccezione quando recupera un elenco di categorie di cui una contiene un’immagine non presente nel filesystem. In precedenza Magento Open Source generava questa eccezione: Category image not found. GitHub-34266
  • La query products restituisce ora category_uid come aggregazione, come previsto. GitHub-32557
  • La mutation updateCartItems rimuove ora i prodotti come previsto quando lo stock del prodotto ha raggiunto la quantità massima. GitHub-30220
  • La query urlResolver risolve ora correttamente il delimitatore di percorso (/) quando più homepage hanno lo stesso identificatore. In precedenza la query non risolveva il delimitatore e restituiva null. GitHub-33615
  • Le query customer recuperano ora come previsto le opzioni a selezione multipla dei prodotti bundle quando si interrogano gli ordini. GitHub-34717
  • Le sessioni di Magento Open Source non terminano più dopo una richiesta GraphQL. In precedenza il plugin ClearCustomerSessionAfterRequest disconnetteva l’acquirente. GitHub-34550
  • L’intervallo di prezzo dei prodotti configurabili nelle risposte della query products viene ora calcolato correttamente quando l’impostazione Display Out of Stock Products è attiva. In precedenza le opzioni disattivate venivano considerate nel calcolo del prezzo minimo e massimo.
  • La query products restituisce ora più categorie filtrate correttamente quando si ordina per posizione.
  • Le richieste setShippingAddressesOnCart convalidano ora correttamente gli ID regione. In precedenza Magento Open Source generava un errore quando si utilizzava l’ID regione anziché il codice regione.
  • Le query products restituiscono ora solo le categorie associate allo store indicato nella richiesta.
  • La query categoryList restituisce ora risultati che rispecchiano la categoria radice dello store interrogato quando lo store è specificato nell’header. In precedenza i risultati includevano le categorie della categoria radice predefinita anche se nell’header era specificato un altro store.
  • La query products non restituisce più gli attributi come aggregazione quando l’impostazione Use in Search Results Layered Navigation è disattivata. GitHub-33318
  • La query cart restituisce ora un solo metodo di pagamento per gli ordini gratuiti. In precedenza nella risposta venivano restituiti tutti i metodi di pagamento attivi. GitHub-34036
  • Le query products non restituiscono più valori price_range influenzati da varianti disattivate per i prodotti configurabili. GitHub-33629
  • È stato aggiunto un plugin prima della chiamata collectQuoteTotals per evitare che il credito store venga applicato più volte.
  • La mutation generateCustomerTokenAsAdmin recupera ora i token cliente come previsto. In precedenza i token non venivano restituiti e veniva restituito questo errore: Customer email provided does not exist.
  • Lo schema GraphQL è ora valido quando viene definito un attributo prodotto personalizzato type. In precedenza lo schema non era valido perché l’attributo type dei tipi di prodotto veniva sovrascritto dall’attributo personalizzato type. GitHub-34929
  • I clienti aggiunti o aggiornati con le mutation createCustomer, createCustomerV2, updateCustomer o updateCustomerV2 vengono ora aggiunti con l’iscrizione alla newsletter attiva. In precedenza i clienti venivano disiscritti dalla newsletter anche quando la richiesta conteneva i parametri di input corretti. GitHub-33599
  • Nei deployment multi-sito, la query products per una specifica store view restituisce ora solo le categorie presenti nella categoria radice del relativo sito web. In precedenza la query restituiva categorie delle categorie radice di altri siti web. GitHub-34570
  • La query products restituisce ora solo la sottocategoria dell’ID categoria fornito. In precedenza restituiva tutte le categorie. GitHub-35220
  • La query customerOrders risponde ora come previsto quando nella risposta è specificato l’oggetto gift_message ma non esiste alcun messaggio regalo. In precedenza la query restituiva questo messaggio: Can't load gift message for order is returned. GitHub-28957
  • È stato corretto un bug dell’indicizzatore catalog_category_product che faceva sì che la query products restituisse categorie di un altro store. GitHub-31253
  • La mutation generateCustomerToken crea ora come previsto una voce in customer_log dopo aver generato un token cliente. GitHub-33378

Google Analytics

  • Al codice è stato aggiunto il modulo Google Tag, che supporta la transizione a Google Analytics 4 prevista per luglio 2023. Attualmente è ancora possibile utilizzare e raccogliere nuovi dati nelle proprietà Google Universal Analytics, ma Google Universal raggiungerà la fine del ciclo di vita a luglio 2023. GitHub-35204, GitHub-35376

Immagini

  • Le immagini nelle pagine di dettaglio prodotto non sfarfallano più e restano centrate come previsto. In precedenza, al termine del caricamento di un’immagine nella pagina di dettaglio, l’immagine si spostava visibilmente verso il basso.

Importazione/esportazione

  • La posizione dei prodotti correlati, upsell e cross-sell nel CSV di esportazione è ora corretta dopo l’eliminazione di un prodotto cross-sell dall’Admin prima di rigenerare il file CSV. In precedenza le posizioni dei prodotti cross-sell non venivano ricalcolate dopo la rimozione di un prodotto cross-sell e l’ordine delle posizioni era errato.
  • Magento Open Source verifica ora l’esistenza di una vista personalizzata prima di filtrare le colonne durante l’esportazione dei report. In precedenza i report esportati non tenevano conto delle viste personalizzate e le colonne esportate erano errate.
  • Magento Open Source importa ora correttamente immagini con nomi di file lunghi. In precedenza Magento Open Source non importava l’immagine e generava questo errore: Imported resource (image) could not be downloaded from external resource due to timeout or access permissions in row(s):.
  • Gli attributi ID categoria sono ora disponibili nei filtri delle esportazioni pianificate.
  • I prodotti bundle che contengono un punto interrogativo (?) nel titolo dell’opzione possono ora essere importati correttamente grazie ai miglioramenti del query builder all’interno del metodo populateExistingOptions. Anche il titolo dell’opzione viene visualizzato correttamente. In precedenza, dopo la prima importazione, le importazioni successive causavano comportamenti anomali e opzioni duplicate, e gli acquirenti non potevano aggiungere il prodotto al carrello.
  • È stata aggiunta la validazione dei nomi delle categorie durante l’importazione. In precedenza Magento Open Source non convalidava i nomi delle categorie, causando errori quando superavano i 255 caratteri.
  • I record esistenti nella tabella catalog_url_rewrite_product_category vengono ora eliminati prima di inserirne di nuovi. In precedenza, durante l’importazione di prodotti multi-store, si verificava il seguente errore: SQLSTATE[23000]: Integrity constraint violation. GitHub-34210

Infrastruttura

  • Un plugin Context Menu deprecato è stato rimosso dall’elenco dei plugin.
  • La logica relativa alla toolbar dell’editor TinyMCE nel modulo Page Builder è stata aggiornata in seguito all’introduzione della logica delayedRender per la toolbar di TinyMCE.
  • Le race condition non interrompono più la creazione dell’event listener contentUpdated. GitHub-32068
  • La funzione getTypeID restituisce ora l’ID del tipo di prodotto e non l’ID del prodotto. GitHub-35458
  • La mappatura dello slider jQuery UI e di SelectMenu è stata corretta in vendor/magento/module-theme/view/base/requirejs-config.js.

  • Gli observer collegati a sales_order_state_change_before supportano ora il recupero dei dati dall’oggetto ordine. L’argomento event di sales_order_state_change_before è stato aggiornato. GitHub-26789

  • indexer:reset è stato rifattorizzato per chiamare $indexer->invalidate(). GitHub-34988
  • Ora è possibile utilizzare il simbolo dei due punti nel valore di un attributo htmlClass, il che consente l’uso di componenti aggiuntivi come Tailwind UI. GitHub-34430

Logging

  • Le azioni su clienti, indirizzi dei clienti e ordini vengono ora registrate correttamente nel report delle azioni Admin. In precedenza Magento Open Source non registrava le azioni se nelle impostazioni di configurazione non era specificato il gestore postDispatch.

MFTF

Action group

Le azioni ripetitive sono state sostituite da action group nei seguenti test:

AdminConfigurableProductChildrenOutOfStockTest GitHub-32378 AdminCreateStoreViewTest GitHub-34631

Nuovi test

AdminUnlockAdminUserEntityTest GitHub-34836

StorefrontNewsletterSubscriptionWithEnabledNeedToConfirmConfigTest GitHub-33344

Test rifattorizzati

AdminCancelTheCreatedOrderWithCashOnDeliveryPaymentMethodTest GitHub-33692

Newsletter

  • I clienti che hanno effettuato l’accesso non vengono più contrassegnati come ospiti in Admin > Marketing > Newsletter Subscribers.
  • L’email di conferma dell’iscrizione alla newsletter riporta ora nel campo From l’indirizzo email corretto, specifico dello store, se il cliente è assegnato a uno store non predefinito ed è stato iscritto o disiscritto dall’Admin. In precedenza il cliente riceveva un’email con l’indirizzo predefinito nell’header From. GitHub-34963
  • L’URL di disiscrizione nel template email della newsletter funziona ora come previsto. GitHub-33310

Ordini

  • I dati dei clienti ospiti vengono ora salvati correttamente dopo la modifica di un ordine. In precedenza alcuni dati del cliente andavano persi, tra cui customer_firstname e customer_lastname, x_forwarded_for.
  • I merchant non possono più creare una nota di credito con una quantità totale decimale quando Decimal qty è disattivato a livello di prodotto o globale. In precedenza era possibile creare una nota di credito con quantità totale decimale anche dove non era applicabile.
  • Il filtro per data funziona ora correttamente nelle griglie di fatture, spedizioni, note di credito, pagine CMS e blocchi CMS quando il fuso orario impostato nelle preferenze è diverso da quello del computer locale. In precedenza la data veniva interpretata in modo errato e i risultati filtrati includevano dati al di fuori dell’intervallo impostato.
  • Magento Open Source non modifica più gli indirizzi email personalizzati assegnati agli ordini quando si cambia l’indirizzo email principale del cliente nella pagina di modifica dell’account nell’Admin. In precedenza, modificando l’indirizzo email principale di un cliente, il nuovo indirizzo veniva assegnato a tutti gli ordini creati per quel cliente.