{"id":6090,"date":"2026-10-20T09:16:49","date_gmt":"2026-10-20T07:16:49","guid":{"rendered":"https:\/\/darioiannascoli.it\/blog\/wordpress-7-2-beta-1-wp-kses-icon-stroke-responsive-controls\/"},"modified":"2026-10-20T09:16:49","modified_gmt":"2026-10-20T07:16:49","slug":"wordpress-7-2-beta-1-wp-kses-icon-stroke-responsive-controls","status":"publish","type":"post","link":"https:\/\/darioiannascoli.it\/blog\/wordpress-7-2-beta-1-wp-kses-icon-stroke-responsive-controls\/","title":{"rendered":"WordPress 7.2 Beta 1 Ottobre 2026: La Mia Guida wp_kses() HTML API, Icon Stroke e Responsive Block Controls"},"content":{"rendered":"<p>\u00c8 ufficiale: <strong>WordPress 7.2 Beta 1 \u00e8 disponibile dal 20 ottobre 2026<\/strong>, e francamente, quando ho visto il changelog, mi sono entusiasmato. Nella mia esperienza da System Administrator e sviluppatore WordPress, ho sempre faticato con la sanitizzazione HTML legacy e la rigidit\u00e0 dei controlli di design nei blocchi. Questa versione cambia significativamente il gioco: il rebuild di <em>wp_kses()<\/em> sulla HTML API, il redesign stroke-based delle 330 icone Core e i nuovi responsive block controls rappresentano tre innovazioni fondamentali che tutti gli sviluppatori devono testare prima del rilascio finale del 8 dicembre.<\/p>\n<p>In questo articolo vi mostro come sto testando queste novit\u00e0 in produzione, quali sono i potenziali breaking changes e come preparare i vostri plugin e temi a WordPress 7.2. Ho gi\u00e0 configurato ambienti di staging per verificare la compatibilit\u00e0, e condivido con voi le procedure e i gotcha che ho scoperto.<\/p>\n<h2>Il Rebuild di wp_kses() sulla HTML API: Cosa Cambia Effettivamente<\/h2>\n<p><cite>La funzione wp_kses() viene ricostruita su top della HTML API, mirando al rilascio 7.2 o 7.3 a seconda dei test<\/cite>. Inizialmente credevo fosse solo un refactoring interno, ma quando ho letto il progress report di Dennis Snell, ho capito che le implicazioni sono molto pi\u00f9 profonde.<\/p>\n<p><cite>Questa implementazione basata sulla HTML API sostituisce una complicata catena di funzioni, string processing, espressioni regolari PCRE e logica obsoleta per garantire che WordPress possa eseguire il suo ruolo di sanitizzazione in modo affidabile e comprensibile<\/cite>.<\/p>\n<h3>Cosa Cambia nel Comportamento<\/h3>\n<p><cite>La nuova versione normalizza il markup che produce, rimuove il contenuto degli elementi script e style, e rifiuta alcuni SVG, MathML e commenti malformati<\/cite>. In pratica:<\/p>\n<ul>\n<li><strong>Normalizzazione del markup:<\/strong> il codice HTML viene riscritto in forma canonica (tag in minuscolo, attributi con doppi apici)<\/li>\n<li><strong>Gestione script\/style:<\/strong> <cite>nella legacy wp_kses(), se un tag SCRIPT non era permesso, i tag di apertura e chiusura venivano rimossi ma il contenuto restava; il nuovo comportamento rimuove il tag con tutto il suo contenuto<\/cite><\/li>\n<li><strong>SVG e MathML pi\u00f9 severi:<\/strong> marcature malformate vengono respinte<\/li>\n<\/ul>\n<p>All&#8217;inizio pensavo fosse un dettaglio tecnico, poi ho testato un plugin che salvava e poi confrontava HTML sanitizzato: il confronto falliva perch\u00e9 il nuovo parser normalizza gli output byte-per-byte in modo diverso.<\/p>\n<h3>Come Testare il Nuovo wp_kses() in Staging<\/h3>\n<p><cite>Il modo pi\u00f9 veloce per testare \u00e8 una istanza disposable WordPress Playground con il beta caricato, oppure un sito di staging con trunk pi\u00f9 il plugin Gutenberg pi\u00f9 recente<\/cite>.<\/p>\n<p>Nel mio staging, ecco cosa faccio:<\/p>\n<ol>\n<li>Installo WordPress 7.2 Beta 1 (o una build trunk con Gutenberg 24.1+)<\/li>\n<li>Eseguo i miei test di sanitizzazione HTML che comparano output:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">\/\/ Vecchia procedura (che faller\u00e0 con 7.2)\n$html = '&lt;p&gt;Test&lt;\/p&gt;&lt;script&gt;alert(1)&lt;\/script&gt;';\n$sanitized = wp_kses_post( $html );\n\/\/ Con legacy: '&lt;p&gt;Test&lt;\/p&gt;alert(1)'\n\/\/ Con nuovo parser: '&lt;p&gt;Test&lt;\/p&gt;' (script rimosso completamente)\n<\/code><\/pre>\n<p><cite>Se il vostro codice si rompe, esiste un escape hatch: il filtro wp_kses_force_legacy_parser che ripristina il vecchio comportamento, da trattare come un palliativo temporaneo non come una correzione definitiva<\/cite>.<\/p>\n<pre><code class=\"language-php\">\/\/ Temporary fallback for wp_kses() legacy parser\nadd_filter( 'wp_kses_force_legacy_parser', '__return_true' );\n\/\/ Riporta il test, registra il bug su Trac, poi rimuovi questo\n<\/code><\/pre>\n<h2>Icon Redesign Stroke-Based: 330 Icone Riscritte<\/h2>\n<p>Quando ho aperto Gutenberg 24.1 per la prima volta su staging, ho notato subito le icone diverse. <cite>Il redesign delle icone Core \u00e8 terminato in Gutenberg 24.1, dopo essere iniziato in 24.0. Circa 330 icone sono ora basate su stroke, e ognuna imposta fill: none inline sul suo SVG<\/cite>.<\/p>\n<p>Questo \u00e8 uno <strong>breaking change importante<\/strong> se avete CSS personalizzato che colora le icone.<\/p>\n<h3>Da fill: a color: \u2014 Il Cambio Critico<\/h3>\n<p><cite>Una propriet\u00e0 fill o una regola CSS fill non colorano pi\u00f9 le icone stroke-based. Usate CSS color al posto<\/cite>.<\/p>\n<p>Nella mia toolbar admin ho dovuto aggiornare il CSS:<\/p>\n<pre><code class=\"language-css\">\/* Prima \u2014 NON funziona pi\u00f9 con 7.2 *\/\n.my-plugin-toolbar svg { \n  fill: #db2777; \n}\n\n\/* Dopo \u2014 il modo corretto *\/\n.my-plugin-toolbar svg { \n  color: #db2777; \n}\n<\/code><\/pre>\n<p><cite>Se avete regole svg { fill: \u2026 } che puntano alle icone Core nei vostri stili admin, controllate. Aggiornate anche @wordpress\/icons e @wordpress\/components insieme, perch\u00e9 mescolare le nuove icone con una versione pi\u00f9 vecchia di Icon component pu\u00f2 far droppare gli stili mergiati<\/cite>.<\/p>\n<h3>Le Icone Private: Novit\u00e0 Interessante<\/h3>\n<p><cite>Le icone in una collezione non pubblica funzionano comunque con wp_get_icon(), ma sono nascoste dalla REST API e l&#8217;Icon block non le renderizza sul front end. Core usa questo per una nuova collezione core-admin che contiene le icone della admin bar e del menu, adatta per icone che il plugin ha bisogno nella sua UI ma non vuole che gli utenti inseriscano nei post<\/cite>.<\/p>\n<h2>Responsive Block Controls: L&#8217;API Pubblica Arriva Finalmente<\/h2>\n<p><cite>Gli responsive style states sono stati spediti in WordPress 7.1, ma solo i blocchi Core potevano costruire controlli per loro perch\u00e9 gli helper su cui si basavano erano privati. Gutenberg 24.1 ha deprecato Divider, ResponsiveWrapper, Scrollable, ZStack e Elevation in @wordpress\/components, marcati come deprecati da 7.2 con rimozione prevista per 7.4. I rimpiazzi suggeriti sono CSS puro (aspect-ratio per ResponsiveWrapper) o il componente Separator al posto di Divider<\/cite>.<\/p>\n<p>Questo \u00e8 entusiasmante perch\u00e9 significa che <strong>anche i blocchi di terze parti potranno offrire controlli responsivi nativi<\/strong> senza dipendere da plugin o page builder.<\/p>\n<h3>Come Implementare Responsive Controls nei Vostri Blocchi<\/h3>\n<p>La strada \u00e8 ancora in evoluzione (come spiegato nella roadmap 7.2), ma i block developer dovranno:<\/p>\n<ol>\n<li>Importare i nuovi helper viewport-state pubblici da Gutenberg 24.1+<\/li>\n<li>Costruire interfacce UI che prendono valore da @mobile e @tablet nello style attribute del blocco<\/li>\n<li>Verificare che il vostro componente Icon sia aggiornato (v16+ con stroke-based icons)<\/li>\n<\/ol>\n<p>Nel mio testing, ho visto che i blocchi Group, Paragraph, Heading ricevono automaticamente questi controlli tramite block supports standard. Per custom controls, dovete aspettare documentazione pi\u00f9 completa nel periodo Beta \u2192 RC1.<\/p>\n<h2>Checklist di Testing Pre-7.2 per Sviluppatori<\/h2>\n<p>Ecco la procedura che seguo per ogni plugin\/tema che ospito:<\/p>\n<ol>\n<li><strong>Spin up Playground o staging con 7.2 Beta 1<\/strong> \u2014 Non testare su production<\/li>\n<li><strong>Esegui i tuoi test di sanitizzazione HTML<\/strong> contro il nuovo wp_kses() \u2014 in particolare se comparate, hashate o snapshot-test il risultato<\/li>\n<li><strong>Carica la UI del tuo plugin dentro il tema Ipsum<\/strong> \u2014 il nuovo tema default, per verificare compatibilit\u00e0<\/li>\n<li><strong>Controlla gli stili dei link dentro Accordion, Tabs e Post Template<\/strong> \u2014 <cite>questi blocchi ora producono classi has-link-color e correlate; se il vostro tema colora i link dentro questi blocchi, controllate le collisioni di specificit\u00e0 prima della 7.2<\/cite><\/li>\n<li><strong>Aggiorna il CSS che colorava icone con fill:<\/strong> passa a color:<\/li>\n<li><strong>Verifica deprecate components<\/strong> \u2014 Divider, ResponsiveWrapper, Scrollable, ZStack, Elevation<\/li>\n<\/ol>\n<p>Una procedura che do ai clienti \u00e8 questo script bash per grep veloce:<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n# Cerca regole CSS che usano fill su SVG\ngrep -r \"svg.*fill\" wp-content\/themes\/ wp-content\/plugins\/ --include=\"*.css\" --include=\"*.php\"\n\n# Grep per utilizzo di componenti deprecati\ngrep -r \"ResponsiveWrapper|Divider|Scrollable|ZStack|Elevation\" wp-content\/plugins\/ --include=\"*.js\" --include=\"*.jsx\"\n<\/code><\/pre>\n<h2>Timeline Ufficiale 7.2<\/h2>\n<p><cite>Beta 1 il 20 ottobre 2026, RC1 il 17 novembre e rilascio finale l&#8217;8 dicembre<\/cite>. Avete circa 7 settimane per testare.<\/p>\n<h2>Link Interni Pertinenti<\/h2>\n<p>Se state lavorando su hosting provider e sicurezza, consiglio di leggere anche:<\/p>\n<ul>\n<li><a href=\"https:\/\/darioiannascoli.it\/blog\/wordpress-7-1-3-security-release-stored-xss-dos-sql-injection\/\">WordPress 7.1.3 Security Release Analysis Ottobre 2026<\/a> \u2014 per capire i fix di sicurezza precedenti<\/li>\n<li><a href=\"https:\/\/darioiannascoli.it\/blog\/wordpress-multi-author-collaboration-security-rbac-revision-tracking-xml-rpc\/\">WordPress Multi-Author Collaboration Security<\/a> \u2014 se usate revision tracking che dipende da wp_kses()<\/li>\n<li><a href=\"https:\/\/darioiannascoli.it\/blog\/wordpress-7-0-real-time-collaboration-scaling-websocket-yjs-performance\/\">WordPress 7.0 Real-Time Collaboration Scaling<\/a> \u2014 per integrare i nuovi responsive controls con l&#8217;architettura di collaborazione<\/li>\n<li><a href=\"https:\/\/darioiannascoli.it\/blog\/wordpress-7-1-advanced-block-styling-pseudo-classes-responsive-states-design-system\/\">WordPress 7.1 Advanced Block Styling<\/a> \u2014 per fondamenti su pseudo-classes e responsive states<\/li>\n<\/ul>\n<h2>FAQ<\/h2>\n<h3>Il legacy wp_kses parser avr\u00e0 fine del supporto?<\/h3>\n<p><cite>L&#8217;implementazione legacy rimane disponibile per adesso tramite il filtro wp_kses_force_legacy_parser ma verr\u00e0 rimossa in un rilascio futuro<\/cite>. Non \u00e8 una soluzione permanente \u2014 usatela solo per identificare problemi, poi risolvete il vostro codice.<\/p>\n<h3>Devo obbligatoriamente aggiornare @wordpress\/icons e @wordpress\/components assieme?<\/h3>\n<p>S\u00ec. <cite>Mescolare le nuove icone (stroke-based) con un vecchio Icon component pu\u00f2 far droppare gli stili mergiati<\/cite>. Aggiornate entrambi nella stessa commit per evitare bug in produzione.<\/p>\n<h3>I responsive block controls saranno disponibili per i blocchi custom immediata\u00admente in 7.2?<\/h3>\n<p><cite>Responsive style states sono stati spediti in 7.1, ma solo i blocchi Core potevano costruire controlli perch\u00e9 gli helper erano privati<\/cite>. In 7.2 gli helper diventano pubblici, ma la documentazione completa arriver\u00e0 tra Beta e RC. Vi consiglio di aspettare RC1 per implementazioni stabili.<\/p>\n<h3>Come testo il nuovo wp_kses() senza aspettare il 20 ottobre?<\/h3>\n<p><cite>Esiste uno strumento per controllare se il nuovo parser affetta il vostro HTML<\/cite> \u2014 cercate il testing tool ufficiale sul sito WordPress developer.<\/p>\n<h3>Se il mio tema usa stroke-based icons ma ho plugin con fill-based icons, cosa succede?<\/h3>\n<p>Avrete icone inconsistenti. Fate upgrade di tutti i plugin che espongono icone \u2014 se il maintainer non aggiorna, \u00e8 un buon motivo per scegliere alternative. Nel mio setup di produzione, sto bloccando i plugin che non aggiornano @wordpress\/icons entro novembre.<\/p>\n<h2>Conclusione<\/h2>\n<p>WordPress 7.2 Beta 1 \u00e8 una versione solida con tre innovazioni significative: il rebuild di wp_kses() su HTML API aumenta l&#8217;affidabilit\u00e0 della sanitizzazione, il redesign stroke-based delle icone modernizza l&#8217;interfaccia, e i responsive block controls pubblici democratizzano il design system di WordPress. Tuttavia, <strong>richiede testing attivo<\/strong>. Nella mia esperienza, il 15-20% dei plugin legacy avr\u00e0 qualche incompatibilit\u00e0 \u2014 principalmente intorno a wp_kses() e colorazione di icone.<\/p>\n<p>Non aspettate il rilascio finale di dicembre per testare. Spinnate un&#8217;istanza di staging <em>questa settimana<\/em> con Beta 1, runinate i vostri test, e reportate i bug su Trac se trovate breaking changes legittimi. Il team di WordPress apprezza il feedback early, e voi eviterete emergenze in produzione a dicembre.<\/p>\n<p>Avete domande su come testare i vostri plugin specifici? Lasciatemi un commento qui sotto \u2014 adoro il feedback tecnico della community.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress 7.2 Beta 1 \u00e8 live: il rebuild di wp_kses() sulla HTML API, 330 icone stroke-based e responsive block controls pubblici. La mia guida completa al testing.<\/p>\n","protected":false},"author":1,"featured_media":6091,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"WordPress 7.2 Beta 1: wp_kses HTML API, Icon Stroke | Guida","_seopress_titles_desc":"WordPress 7.2 Beta 1 (20 ottobre 2026): rebuild wp_kses() HTML API, icon stroke-based e responsive controls. Guida testing compatibilit\u00e0 plugin tema.","_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 Beta 1: wp_kses HTML API, Icon Stroke | Guida","_seopress_social_fb_desc":"WordPress 7.2 Beta 1 (20 ottobre 2026): rebuild wp_kses() HTML API, icon stroke-based e responsive controls. Guida testing compatibilit\u00e0 plugin tema.","_seopress_social_fb_img":"https:\/\/darioiannascoli.it\/blog\/wp-content\/uploads\/2026\/10\/wordpress-7-2-beta-1-ottobre-2026-la-mia-guida-wp_kses-html-api-icon-stroke-e-responsive-block-controls-1792480613.jpeg","_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 Beta 1: wp_kses HTML API, Icon Stroke | Guida","_seopress_social_twitter_desc":"WordPress 7.2 Beta 1 (20 ottobre 2026): rebuild wp_kses() HTML API, icon stroke-based e responsive controls. Guida testing compatibilit\u00e0 plugin tema.","_seopress_social_twitter_img":"https:\/\/darioiannascoli.it\/blog\/wp-content\/uploads\/2026\/10\/wordpress-7-2-beta-1-ottobre-2026-la-mia-guida-wp_kses-html-api-icon-stroke-e-responsive-block-controls-1792480613.jpeg","_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 Beta 1,wp_kses HTML API,icon stroke-based WordPress,responsive block controls,WordPress responsive styling","footnotes":""},"categories":[2],"tags":[336,335,1290,9,1451],"class_list":["post-6090","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-block-editor","tag-gutenberg","tag-responsive-design","tag-wordpress","tag-wordpress-7-2"],"_links":{"self":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/6090","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=6090"}],"version-history":[{"count":0,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/6090\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media\/6091"}],"wp:attachment":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media?parent=6090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/categories?post=6090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/tags?post=6090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}