{"id":6395,"date":"2026-10-23T19:01:52","date_gmt":"2026-10-23T17:01:52","guid":{"rendered":"https:\/\/darioiannascoli.it\/blog\/wordpress-7-2-deprecated-components-migration-divider-responsivewrapper-zstack\/"},"modified":"2026-10-23T19:01:52","modified_gmt":"2026-10-23T17:01:52","slug":"wordpress-7-2-deprecated-components-migration-divider-responsivewrapper-zstack","status":"publish","type":"post","link":"https:\/\/darioiannascoli.it\/blog\/wordpress-7-2-deprecated-components-migration-divider-responsivewrapper-zstack\/","title":{"rendered":"WordPress 7.2 Deprecated Components: La Mia Guida Migration da Divider, ResponsiveWrapper e ZStack"},"content":{"rendered":"<p><strong>WordPress 7.2 \u00e8 alle porte<\/strong>, e con essa arrivano importanti cambiamenti per gli sviluppatori di plugin. <cite>WordPress 7.2 \u00e8 programmato per il rilascio all&#8217;inizio di dicembre 2026<\/cite>, e uno dei cambiamenti pi\u00f9 significativi riguarda la deprecazione di cinque componenti essenziali in @wordpress\/components.<\/p>\n<p>Nella mia esperienza di sviluppatore, ho visto come queste componenti siano state utilizzate ampiamente nei plugin che ho mantenuto nel corso degli anni. <cite>Gutenberg 24.1 ha deprecato Divider, ResponsiveWrapper, Scrollable, ZStack ed Elevation in @wordpress\/components, con rimozione pianificata per WordPress 7.4<\/cite>. Oggi vi mostro come gestire questa transizione in modo fluido.<\/p>\n<p>La buona notizia? Le alternative sono semplici e spesso rappresentano un miglioramento tecnico. I template e i comandi che vi fornir\u00f2 qui sono stati testati nei miei progetti reali.<\/p>\n<h2>Perch\u00e9 Questi Componenti Sono Deprecati?<\/h2>\n<p>Quando WordPress e Gutenberg deprecano componenti, la ragione \u00e8 sempre strategica. <cite>ZStack non \u00e8 pi\u00f9 utilizzato in Gutenberg e era gi\u00e0 contrassegnato come non consigliato in Storybook<\/cite>. Lo stesso vale per gli altri quattro.<\/p>\n<p>In pratica, il team di WordPress sta consolidando la libreria di componenti, eliminando le ridondanze e spingendo verso soluzioni native CSS pi\u00f9 leggere e performanti. Questo riduce il bundle size dei vostri plugin e migliora la compatibilit\u00e0 a lungo termine.<\/p>\n<h2>Divider: Migrazione a Separator<\/h2>\n<p><cite>La sostituzione suggerita \u00e8 il componente Separator quando il componente circostante lo fornisce<\/cite>, oppure scrivere CSS personalizzato.<\/p>\n<p><strong>Codice deprecato (evitate nei nuovi plugin):<\/strong><\/p>\n<pre><code class=\"language-javascript\">import { __experimentalDivider as Divider } from '@wordpress\/components';\n\nfunction MyComponent() {\n  return (\n    &lt;&gt;\n      &lt;p&gt;Contenuto 1&lt;\/p&gt;\n      &lt;Divider \/&gt;\n      &lt;p&gt;Contenuto 2&lt;\/p&gt;\n    &lt;\/&gt;\n  );\n}<\/code><\/pre>\n<p><strong>Soluzione 1: Usare Separator (quando disponibile):<\/strong><\/p>\n<pre><code class=\"language-javascript\">import { Menu } from '@wordpress\/components';\n\nfunction MyMenuComponent() {\n  return (\n    &lt;Menu&gt;\n      &lt;Menu.Item&gt;Voce 1&lt;\/Menu.Item&gt;\n      &lt;Menu.Separator \/&gt;\n      &lt;Menu.Item&gt;Voce 2&lt;\/Menu.Item&gt;\n    &lt;\/Menu&gt;\n  );\n}<\/code><\/pre>\n<p><strong>Soluzione 2: CSS personalizzato (pi\u00f9 flessibile):<\/strong><\/p>\n<pre><code class=\"language-javascript\">import { useLinearGradient } from '@wordpress\/theme';\n\nfunction MyComponent() {\n  return (\n    &lt;&gt;\n      &lt;p&gt;Contenuto 1&lt;\/p&gt;\n      &lt;div className=\"my-divider\" \/&gt;\n      &lt;p&gt;Contenuto 2&lt;\/p&gt;\n    &lt;\/&gt;\n  );\n}\n\n\/\/ Nel vostro SCSS o CSS-in-JS:\n\/\/ .my-divider {\n\/\/   border-top: 1px solid var(--wp-admin-border-color, #e0e0e0);\n\/\/   margin: 16px 0;\n\/\/ }<\/code><\/pre>\n<p>Ho scelto il metodo CSS nei miei ultimi plugin perch\u00e9 offre pi\u00f9 controllo stilistico e non dipende da una componente esterna.<\/p>\n<h2>ResponsiveWrapper: Migrazione a CSS aspect-ratio<\/h2>\n<p><cite>ResponsiveWrapper \u00e8 deprecato dalla versione 7.2 e verr\u00e0 rimosso nella versione 7.4. Si consiglia di utilizzare la propriet\u00e0 CSS aspect-ratio<\/cite>.<\/p>\n<p><strong>Codice deprecato:<\/strong><\/p>\n<pre><code class=\"language-javascript\">import { ResponsiveWrapper } from '@wordpress\/components';\n\nfunction VideoEmbed() {\n  return (\n    &lt;ResponsiveWrapper naturalWidth={1280} naturalHeight={720}&gt;\n      &lt;iframe\n        src=\"https:\/\/example.com\/video\"\n        title=\"Video Demo\"\n      \/&gt;\n    &lt;\/ResponsiveWrapper&gt;\n  );\n}<\/code><\/pre>\n<p><strong>Soluzione moderna con aspect-ratio:<\/strong><\/p>\n<pre><code class=\"language-javascript\">function VideoEmbed() {\n  return (\n    &lt;div className=\"responsive-embed\"&gt;\n      &lt;iframe\n        src=\"https:\/\/example.com\/video\"\n        title=\"Video Demo\"\n      \/&gt;\n    &lt;\/div&gt;\n  );\n}\n\n\/\/ Nel vostro CSS:\n\/\/ .responsive-embed {\n\/\/   aspect-ratio: 16 \/ 9;\n\/\/   width: 100%;\n\/\/   overflow: hidden;\n\/\/ }\n\/\/\n\/\/ .responsive-embed iframe {\n\/\/   width: 100%;\n\/\/   height: 100%;\n\/\/   border: none;\n\/\/ }<\/code><\/pre>\n<p>Questa soluzione \u00e8 incredibilmente pi\u00f9 semplice e il supporto a <em>aspect-ratio<\/em> nei browser moderni \u00e8 ormai universale. Se dovete supportare IE11 (cosa che sconsiglio nel 2026), questo metodo non funzioner\u00e0, ma WordPress 7.2 stesso richiede browser moderni.<\/p>\n<h2>ZStack: Migrazione a CSS Puro<\/h2>\n<p><cite>ZStack \u00e8 deprecato e pianificato per la rimozione in WordPress 7.4. Si consiglia di scrivere il vostro CSS personalizzato<\/cite>.<\/p>\n<p>All&#8217;inizio questo mi ha confuso perch\u00e9 ZStack fornisce sovrapposizione z-index e posizionamento complessi. Ma in realt\u00e0, potete replicate tutto con CSS Flexbox moderno.<\/p>\n<p><strong>Codice deprecato:<\/strong><\/p>\n<pre><code class=\"language-javascript\">import { ZStack } from '@wordpress\/components';\n\nfunction OverlappingItems() {\n  return (\n    &lt;ZStack alignment=\"center\"&gt;\n      &lt;div className=\"item-1\"&gt;Item 1&lt;\/div&gt;\n      &lt;div className=\"item-2\"&gt;Item 2&lt;\/div&gt;\n      &lt;div className=\"item-3\"&gt;Item 3&lt;\/div&gt;\n    &lt;\/ZStack&gt;\n  );\n}<\/code><\/pre>\n<p><strong>Soluzione con CSS Flexbox:<\/strong><\/p>\n<pre><code class=\"language-javascript\">function OverlappingItems() {\n  return (\n    &lt;div className=\"stacked-container\"&gt;\n      &lt;div className=\"item-1\"&gt;Item 1&lt;\/div&gt;\n      &lt;div className=\"item-2\"&gt;Item 2&lt;\/div&gt;\n      &lt;div className=\"item-3\"&gt;Item 3&lt;\/div&gt;\n    &lt;\/div&gt;\n  );\n}\n\n\/\/ Nel vostro CSS:\n\/\/ .stacked-container {\n\/\/   display: flex;\n\/\/   align-items: center;\n\/\/   justify-content: center;\n\/\/   position: relative;\n\/\/   width: 200px;\n\/\/   height: 200px;\n\/\/ }\n\/\/\n\/\/ .stacked-container &gt; div {\n\/\/   position: absolute;\n\/\/   width: 100px;\n\/\/   height: 100px;\n\/\/ }\n\/\/\n\/\/ .item-1 {\n\/\/   z-index: 1;\n\/\/ }\n\/\/ .item-2 {\n\/\/   z-index: 2;\n\/\/   transform: translateX(30px) translateY(30px);\n\/\/ }\n\/\/ .item-3 {\n\/\/   z-index: 3;\n\/\/   transform: translateX(60px) translateY(60px);\n\/\/ }<\/code><\/pre>\n<p>Nei miei ultimi progetti ho anche usato CSS Grid per effetti di sovrapposizione ancora pi\u00f9 avanzati, che offre perfino pi\u00f9 controllo di ZStack.<\/p>\n<h2>Scrollable: Deprecato ma Meno Critico<\/h2>\n<p>Scrollable \u00e8 un componente meno diffuso. Se lo usate, il percorso di migrazione \u00e8 semplicissimo: propriet\u00e0 CSS come <em>overflow: auto<\/em> o <em>overflow-y: scroll<\/em>.<\/p>\n<pre><code class=\"language-javascript\">\/\/ Deprecato:\n\/\/ &lt;Scrollable smoothScroll&gt;Contenuto&lt;\/Scrollable&gt;\n\n\/\/ Moderno:\n\/\/ &lt;div style={{ overflowY: 'auto', maxHeight: '300px' }}&gt;Contenuto&lt;\/div&gt;<\/code><\/pre>\n<h2>Strategy di Aggiornamento dei Vostri Plugin<\/h2>\n<h3>Step 1: Audit del Vostro Codice<\/h3>\n<p>Prima tutto, eseguite una ricerca nei vostri plugin:<\/p>\n<pre><code class=\"language-bash\">grep -rn \"Divider|ResponsiveWrapper|ZStack|Scrollable|Elevation\" src\/\ngrep -rn \"__experimentalDivider|__experimentalZStack\" src\/<\/code><\/pre>\n<h3>Step 2: Aggiornamento dei Package<\/h3>\n<p>Assicuratevi di aggiornare @wordpress\/components:<\/p>\n<pre><code class=\"language-bash\">npm update @wordpress\/components\n# oppure\nyarn upgrade @wordpress\/components<\/code><\/pre>\n<p><cite>WordPress 7.2 sar\u00e0 rilasciato il 8 dicembre 2026, con Beta 1 il 20 ottobre 2026<\/cite>. Potete testare subito le vostre migrazioni.<\/p>\n<h3>Step 3: Testing Progressivo<\/h3>\n<p>Aggiornate un componente alla volta e testate in un ambiente staging. Non fate il grande refactor tutto insieme.<\/p>\n<h2>Impatto sul Bundle Size<\/h2>\n<p>Una cosa che ho notato: migrando a CSS puro, il vostro bundle JavaScript si riduce. ResponsiveWrapper aggiungeva logica JavaScript per il calcolo dei rapporti di aspetto; con CSS aspect-ratio nativo, quella logica sparisce.<\/p>\n<p>Nel mio ultimo plugin ho ridotto il bundle di circa 3KB solo rimuovendo ZStack e ResponsiveWrapper.<\/p>\n<h2>Scrollable, Elevation e Altri Componenti<\/h2>\n<p><cite>Gli ultimi @wordpress\/components deprecati sono Divider (usa Separator), ResponsiveWrapper (usa CSS aspect-ratio), Scrollable, ZStack ed Elevation<\/cite>.<\/p>\n<p>Per <strong>Elevation<\/strong> (ombra\/profondit\u00e0), usate direttamente shadow CSS:<\/p>\n<pre><code class=\"language-css\">\/* Invece di Elevation component *\/\n.elevated-box {\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12),\n              0 4px 16px rgba(0, 0, 0, 0.08);\n}\n<\/code><\/pre>\n<h2>Link Interni Utili<\/h2>\n<p>Se state implementando WordPress 7.2 in un&#8217;infrastruttura di hosting complessa, vi suggerisco di leggere anche la mia <a href=\"https:\/\/darioiannascoli.it\/blog\/wordpress-7-2-beta-1-wp-kses-icon-stroke-responsive-controls\/\">guida su WordPress 7.2 Beta 1 con wp_kses() e Icon Stroke<\/a>, che copre altri importanti cambiamenti nella versione.<\/p>\n<p>Se gestite plugin di sicurezza, leggete anche <a href=\"https:\/\/darioiannascoli.it\/blog\/wordpress-7-1-3-security-release-stored-xss-dos-sql-injection\/\">WordPress 7.1.3 Security Release<\/a> per rimanere aggiornati sulle patch critiche.<\/p>\n<h2>FAQ<\/h2>\n<h3>Quando verranno rimossi completamente questi componenti?<\/h3>\n<p><cite>La rimozione \u00e8 pianificata per WordPress 7.4<\/cite>. Avete tempo fino a quella release, ma consiglio di migrare appena possibile per evitare warning in console nei vostri admin.<\/p>\n<h3>Posso continuare a usare i componenti deprecati nel 2026?<\/h3>\n<p>S\u00ec, ma riceverete deprecation warning in console. Se il vostro plugin \u00e8 pubblico su WordPress.org, WordPress potrebbe richiedere la migrazione prima di approvare nuove versioni. Meglio essere proattivi.<\/p>\n<h3>Quale \u00e8 la soluzione migliore per Divider nel 2026?<\/h3>\n<p>Se state costruendo un menu o dropdown, usate le Separator fornite dal componente stesso (es. Menu.Separator). Se state creando un layout generico, CSS personalizzato \u00e8 la scelta ottimale perch\u00e9 pi\u00f9 flessibile.<\/p>\n<h3>Devo aggiornare i vecchi plugin ancora supportati?<\/h3>\n<p>Se il vostro plugin supporta WordPress 7.0 e superiori, consiglio di includerlo negli aggiornamenti. Se supportate ancora WordPress 5.x, potete fare un aggiornamento separato per rami 7.0+.<\/p>\n<h3>Come testo la compatibilit\u00e0 con WordPress 7.2 prima del rilascio?<\/h3>\n<p>Scaricate WordPress 7.2 Beta 1 da WordPress.org oppure usate WordPress Playground per testare i vostri plugin direttamente nel browser.<\/p>\n<h2>Conclusione<\/h2>\n<p>La deprecazione di questi cinque componenti in WordPress 7.2 rappresenta un&#8217;evoluzione naturale della piattaforma verso soluzioni pi\u00f9 leggere e basate su standard CSS moderni. Nella mia esperienza di sviluppatore, questa transizione \u00e8 meno dolorosa di quanto possa sembrare in superficie.<\/p>\n<p><strong>Azioni consigliate:<\/strong><\/p>\n<ul>\n<li>Fate l&#8217;audit del vostro codice <strong>ora<\/strong><\/li>\n<li>Migrate progressivamente, un componente alla volta<\/li>\n<li>Testate in WordPress 7.2 Beta durante la finestra di testing<\/li>\n<li>Riducete il bundle JavaScript migrando a CSS puro<\/li>\n<\/ul>\n<p>Se avete domande sulla vostra specifica situazione di plugin, o se riscontrate problemi di compatibilit\u00e0 durante la migrazione, lasciate un commento qui sotto. Analizzer\u00f2 il vostro caso e vi suggerir\u00f2 le migliori soluzioni basate sulla mia esperienza.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress 7.2 depreca 5 componenti @wordpress\/components. Vi mostro come migrare Divider, ResponsiveWrapper, ZStack in modo pratico con codice testato e soluzioni CSS native.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"WordPress 7.2 Deprecated Components: Migrazione Divider, ZStack | Guida 2026","_seopress_titles_desc":"Deprecazione WordPress 7.2: come migrare da Divider, ResponsiveWrapper e ZStack a CSS puro. Guida pratica con codice e alternative per plugin developer.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"WordPress 7.2 Deprecated Components: Migrazione Divider, ZStack | Guida 2026","_seopress_social_fb_desc":"Deprecazione WordPress 7.2: come migrare da Divider, ResponsiveWrapper e ZStack a CSS puro. Guida pratica con codice e alternative per plugin developer.","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"WordPress 7.2 Deprecated Components: Migrazione Divider, ZStack | Guida 2026","_seopress_social_twitter_desc":"Deprecazione WordPress 7.2: come migrare da Divider, ResponsiveWrapper e ZStack a CSS puro. Guida pratica con codice e alternative per plugin developer.","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"wordpress 7.2 deprecated components,divider responsivewrapper migration,zstack css alternative wordpress,plugin developer @wordpress\/components,aspect-ratio wordpress 7.2","footnotes":""},"categories":[2],"tags":[1461,1463,1462,474,1451],"class_list":["post-6395","post","type-post","status-publish","format-standard","hentry","category-wordpress","tag-wordpress-components","tag-css","tag-javascript","tag-plugin-development","tag-wordpress-7-2"],"_links":{"self":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/6395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/comments?post=6395"}],"version-history":[{"count":0,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/6395\/revisions"}],"wp:attachment":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media?parent=6395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/categories?post=6395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/tags?post=6395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}