{"id":233355,"date":"2023-02-11T13:11:00","date_gmt":"2023-02-11T10:11:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233355"},"modified":"2022-11-10T20:38:59","modified_gmt":"2022-11-10T17:38:59","slug":"le-basi-dello-sviluppo-per-wordpress-gutenberg-per-principianti","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/le-basi-dello-sviluppo-per-wordpress-gutenberg-per-principianti\/","title":{"rendered":"Le basi dello sviluppo per WordPress Gutenberg per principianti"},"content":{"rendered":"\n<p>Questo post ha lo scopo di aiutarti a comprendere i concetti chiave per lo sviluppo del nuovo editor in WordPress; Gutenberg. Gutenberg \u00e8 ancora abbastanza nuovo al momento della stesura di questo. E come per tutte le nuove tecnologie nella loro fase di nascita, la documentazione e gli standard sono purtroppo un po&#8217; carenti.<\/p>\n<p>Il sito di documentazione di WordPress ha un&#8217;ampia sezione dedicata a Gutenberg per gli sviluppatori; chiamato il <a href=\"https:\/\/developer.wordpress.org\/block-editor\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">manuale dell&#8217;editore di Gutenberg<\/a>. Contiene gi\u00e0 un bel po&#8217; di informazioni. Ma potrebbe essere un po&#8217; confuso o intimidatorio per qualcuno che \u00e8 nuovo di zecca alle tecnologie basate su Javascript. Per gli sviluppatori focalizzati su PHP che potrebbero avere solo una conoscenza di base di Javascript\/jQuery, le nuove tecnologie di WordPress potrebbero sembrare intimidatorie. Ma fidati di me, una volta che avrai appreso i concetti chiave, vedrai quali nuove possibilit\u00e0 hai ora come sviluppatore di WordPress.<\/p>\n<p>Partiamo dalle basi assolute. Quali linguaggi di programmazione e strumenti avresti bisogno di usare o imparare per sviluppare al meglio per Gutenberg?<\/p>\n<h2>La lingua e le librerie che devi conoscere<\/h2>\n<p>La risposta breve a quale linguaggio \u00e8 necessario utilizzare per lo sviluppo in Gutenberg \u00e8: Javascript. Tuttavia, nel mondo di Javascript, ci sono alcuni concetti, estensioni e strumenti di cui dovresti essere a conoscenza.<\/p>\n<p>Prima di tutto c&#8217;\u00e8 una questione di versione di Javascript. C&#8217;\u00e8 una standardizzazione ufficiale di Javascript; ECMAScript. ECMAScript 5 (spesso abbreviato in <strong>ES5<\/strong>) \u00e8 uscito circa 10 anni fa ed \u00e8 la versione Javascript con cui la maggior parte di noi sviluppatori ha familiarit\u00e0. Poi abbiamo ECMAScript 6 (spesso abbreviato in <strong>ES6<\/strong>) uscito nel 2015. Alcune persone si riferiscono a questa versione come ES2015. E infine c&#8217;\u00e8 <strong>ESNext<\/strong>, che \u00e8 un nome dinamico che copre la prossima versione, contenente proposte che speriamo di essere incluse in qualsiasi prossima versione standardizzata di Javascript.<\/p>\n<p>Potresti pensare sulla falsariga di &quot;quindi va tutto bene, le versioni pi\u00f9 recenti di Javascript significano solo pi\u00f9 funzionalit\u00e0. Quindi user\u00f2 solo quello pi\u00f9 recente.&quot; Ma c&#8217;\u00e8 una cosa molto importante che devi sapere riguardo alle versioni di Javascript ed \u00e8 questa: la maggior parte dei browser oggi pu\u00f2 capire solo ES5.<\/p>\n<p>Ci\u00f2 significa che se vuoi scrivere Javascript in ES6 o ESNext, devi impostare strumenti che trasformino il tuo codice in ES5 in modo che i browser possano capirlo. Ma prima di iniziare a pensare di saltare del tutto l&#8217;apprendimento di ES6 ed ESNext, ricorda che ES5 ha 10 anni. E ti richieder\u00e0 di scrivere molto pi\u00f9 codice. Sar\u00e0 anche molto meno leggibile e pi\u00f9 complesso che se lo scrivessi in ES6 o ESNext.<\/p>\n<p>Inoltre, per i concetti di Gutenberg, vuoi anche usare <strong>JSX<\/strong>, un&#8217;estensione della sintassi a Javascript. JSX \u00e8 anche un linguaggio che i browser non possono capire senza trasformarlo.<\/p>\n<h3>Allora perch\u00e9 preoccuparsi di ES6, ESNext o JSX?<\/h3>\n<p>Se non sei ancora convinto che ES6\/ESNext valga il passaggio in pi\u00f9 per trasformarlo, lascia che ti mostri un confronto del codice. Con ES6 e JSX puoi scrivere questo per restituire un semplice paragrafo; con una classe e un output dinamico da una variabile;<\/p>\n<pre><code>return &lt;p className=\"example\"&gt;Hello, my name is {name}&lt;\/p&gt;;<\/code><\/pre>\n<p>Per quelli di voi che sono nuovi a questo e pensano che ho dimenticato le citazioni \u2013 no, non l&#8217;ho fatto. Questa \u00e8 la semplicit\u00e0 di JSX. Confrontiamo quanto sopra con come scriveresti con ES5 e le librerie Javascript di WordPress:<\/p>\n<pre><code>return wp.element.createElement(\n    'p',\n    { className: 'example' },\n    'Hello, my name is ' + name\n);<\/code><\/pre>\n<p>Tutto il codice sopra \u00e8 richiesto per emettere ci\u00f2 che ES6 e JSX possono fare in una singola riga molto facile da leggere! Immagina di costruire un&#8217;interfaccia utente pi\u00f9 complessa con eventi e condizionali, quando solo un semplice paragrafo richiede questo ingombrante pezzo di codice.<\/p>\n<p>Convinto? Bene!<\/p>\n<h3>Strumenti di trasformazione e React JS<\/h3>\n<p>Lo strumento pi\u00f9 comune, e quello utilizzato da WordPress, per trasformare ES6\/ESNext \u00e8 <a href=\"https:\/\/babeljs.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Babel<\/a>. Normalmente useresti Babel come plugin per <a href=\"https:\/\/webpack.js.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Webpack<\/a>, che \u00e8 uno strumento che raggruppa e minimizza i tuoi file Javascript. Entrambi gli strumenti utilizzano <a href=\"https:\/\/nodejs.org\/en\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Node.js<\/a>, che offre alcuni strumenti per eseguire script per Webpack e Babel nella riga di comando. Se tutto ci\u00f2 pu\u00f2 confondere, ho un post che spiega <a href=\"https:\/\/awhitepixel.com\/blog\/guide-in-setting-up-a-development-environment-for-gutenberg-with-npm-webpack-and-babel\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">in modo approfondito come impostare tutti questi strumenti per<\/a> lo sviluppo di Gutenberg.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153969-61e5175b816e1.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153969-61e5175b816e1.png\" alt=\"Le basi dello sviluppo per WordPress Gutenberg per principianti\" ><\/a><\/p>\n<p>La seconda cosa che devi sapere riguardo alle tecnologie \u00e8 che Gutenberg si basa su uno strato di astrazione sopra <strong>React JS<\/strong>. <a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">React JS<\/a> \u00e8 una libreria Javascript open source gestita da Facebook ed \u00e8 stata rilasciata intorno all&#8217;anno 2013. Poich\u00e9 React \u00e8 in circolazione da un po&#8217;, ci sono molti tutorial, guide e documentazione per questa libreria. Il sito ufficiale di React ha un buon <a href=\"https:\/\/reactjs.org\/tutorial\/tutorial.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tutorial<\/a> dettagliato per te che non conosci React. Sicuramente non \u00e8 necessario essere un esperto di React per sviluppare per Gutenberg, ma le basi di come funziona con i componenti e gli stati ti aiuteranno molto a capire Gutenberg.<\/p>\n<h3>Concludere:<\/h3>\n<ul>\n<li>Learning <strong>React JS<\/strong> far\u00e0 molto per capire come sviluppare per Gutenberg. Soprattutto se vuoi creare i tuoi blocchi personalizzati o personalizzare quelli esistenti.<\/li>\n<li>Puoi farlo usando solo ES5 Javascript, ma \u00e8 sicuramente consigliato imparare <strong>ES6<\/strong>, <strong>ESNext<\/strong> e <strong>JSX<\/strong>.<\/li>\n<li>Acquisisci familiarit\u00e0 con gli strumenti necessari per trasformare il tuo codice ES6 \/ ESNext \/ JSX. Questi strumenti sono <strong>npm<\/strong>, <strong>Webpack<\/strong> e <strong>Babel<\/strong>.<\/li>\n<\/ul>\n<h2>Il nuovo modo di archiviare i contenuti dei post e perch\u00e9<\/h2>\n<p>Uno dei maggiori vantaggi di Gutenberg \u00e8 l&#8217;allontanamento dall&#8217;HTML fisso nei contenuti dei post. WordPress, prima di Gutenberg, e la maggior parte dei CMS basati sul Web memorizzano il contenuto degli articoli in puro HTML. Questo non \u00e8 generalmente un problema con i contenuti semplici (titoli e paragrafi). Ma potrebbe essere un problema pi\u00f9 grande con contenuti ricchi pi\u00f9 complessi e dinamici.<\/p>\n<p>Qualsiasi CMS che consente contenuto dinamico all&#8217;interno del contenuto dell&#8217;articolo incontrer\u00e0 problemi su come salvarlo come HTML valido. Potrebbe trattarsi di qualsiasi cosa da un&#8217;immagine che fa riferimento al suo ID all&#8217;interno del sistema anzich\u00e9 all&#8217;URL completo. O un widget che mostra dinamicamente gli ultimi post all&#8217;interno di una determinata categoria. Normalmente questo verr\u00e0 risolto emettendo HTML criptico personalizzato che non ha senso essere emesso normalmente. E poi lascia che il parser CMS gestisca la trasformazione di quei pezzi HTML in qualcosa di significativo o dinamico. Lo svantaggio \u00e8 che se trasferisci i tuoi contenuti in un altro CMS, spesso si tradurr\u00e0 in un brutto HTML. Il contenuto verrebbe riempito con HTML non analizzato che devi ripulire manualmente. Questo problema \u00e8 ci\u00f2 che Gutenberg mira a risolvere.<\/p>\n<p>Con Gutenberg WordPress ha scelto di salvare informazioni aggiuntive e dinamiche come commenti HTML. I commenti HTML non sono mai visibili per gli utenti sul sito Web e praticamente qualsiasi cosa \u00e8 consentita all&#8217;interno del blocco dei commenti. Un commento HTML inizia con <code>&lt;!--<\/code>e termina con <code>--&gt;<\/code>e Gutenberg memorizza i dati in una determinata struttura con formato JSON. Ogni blocco in Gutenberg \u00e8 racchiuso da un commento HTML iniziale e da un commento HTML di chiusura dopo di esso.<\/p>\n<h3>Il nuovo modo in cui i contenuti dei post vengono archiviati<\/h3>\n<p>Non entrer\u00f2 nei dettagli su come sono strutturati i blocchi di commenti: troverai una <a href=\"https:\/\/developer.wordpress.org\/block-editor\/key-concepts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">guida dettagliata<\/a> su questo nel Manuale dell&#8217;editor di WordPress. Ma ad esempio, un semplice paragrafo nel contenuto del post di Gutenberg verr\u00e0 salvato nel database come:<\/p>\n<pre><code>&lt;!-- wp:paragraph --&gt;\n&lt;p&gt;Lorem ipsum dolor sit amet consectetur adipiscing elit.&lt;\/p&gt;\n&lt;!-- \/wp:paragraph --&gt;<\/code><\/pre>\n<p>Per quanto riguarda il contenuto dinamico, di solito non viene prodotto alcun HTML. Tutte le informazioni di cui ha bisogno WordPress per capire cosa sta facendo questo blocco si trovano all&#8217;interno dei commenti HTML. Ecco come Gutenberg memorizza un blocco di &quot;Ultimi post&quot;:<\/p>\n<pre><code>&lt;!-- wp:latest-posts {\"categories\":\"17\",\"displayPostContent\":true,\"excerptLength\":30,\"postLayout\":\"grid\"} \/--&gt;<\/code><\/pre>\n<p>Poich\u00e9 tutto \u00e8 un commento HTML, il trasferimento dei tuoi post in un altro WordPress senza Gutenberg o un altro CMS far\u00e0 in modo che nessun brutto HTML non analizzato venga sputato fuori. Sar\u00e0 semplicemente ignorato e saltato.<\/p>\n<p>Come probabilmente avrai gi\u00e0 capito \u00e8 che i blocchi di commento iniziano con il nome del blocco, preceduto da &#8216; <code>wp<\/code>&#8216;. Se sono presenti impostazioni personalizzate, verranno emesse dopo il nome in JSON, come puoi vedere nell&#8217;esempio di Ultimi post-blocco. Gutenberg si riferisce a questi come attributi e questo concetto \u00e8 qualcosa con cui acquisirai molta familiarit\u00e0 quando inizierai a imparare a sviluppare per Gutenberg.<\/p>\n<p><strong>Utile da sapere:<\/strong><br \/>\nse vuoi dare un&#8217;occhiata pi\u00f9 da vicino a come vengono salvati i nuovi contenuti del post, puoi guardare nella tua <code>wp_posts<\/code>tabella nel tuo database. C&#8217;\u00e8 un altro metodo pi\u00f9 semplice per dare un&#8217;occhiata al valore completo del database, dall&#8217;interno dei modelli di WordPress. Nel tuo singolo modello all&#8217;interno del ciclo, usa semplicemente &quot; <code>echo get_the_content()<\/code>&quot;. L&#8217;uso del normale &quot; <code>the_content()<\/code>&quot; produrr\u00e0 il contenuto del post analizzato, ma facendo eco al valore del contenuto verr\u00e0 prodotto esattamente ci\u00f2 che \u00e8 archiviato nel database. Puoi utilizzare lo strumento Ispeziona o visualizzare l&#8217;origine in Chrome o Firefox per visualizzare i blocchi di commenti.<\/p>\n<h2>Cosa puoi fare come sviluppatore in Gutenberg<\/h2>\n<p>Hai un paio di opzioni su come personalizzare i tuoi temi o plugin per Gutenberg. Di seguito sono elencate le personalizzazioni pi\u00f9 comuni che probabilmente faresti come sviluppatore.<\/p>\n<h3>Estendi e personalizza i blocchi esistenti<\/h3>\n<p>WordPress Gutenberg viene fornito con un ampio pacchetto di tipi di blocchi e puoi estenderne uno qualsiasi. Puoi anche rimuoverne alcuni o decidere in alcuni casi di consentirne o rimuoverne solo alcuni.<\/p>\n<p>Il metodo pi\u00f9 comune per estendere un blocco \u00e8 <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/filters\/block-filters\/#block-style-variations\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l&#8217;aggiunta di stili di blocco personalizzati,<\/a> che sono variazioni di stile di un blocco. Gli stili di blocco non sono cos\u00ec comuni in WordPress predefinito, ma ce ne sono alcuni. Dai un&#8217;occhiata al blocco Preventivo. Nell&#8217;editor di Gutenberg avrai una casella nella barra laterale di destra chiamata &quot;Stili&quot;.<\/p>\n<p>Un altro modo per personalizzare i blocchi esistenti consiste nell&#8217;utilizzare i filtri. Probabilmente hai familiarit\u00e0 con i filtri che utilizzano PHP in WordPress, ma con Gutenberg ora ci sono <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/filters\/block-filters\/#filters\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">filtri basati su Javascript sui blocchi<\/a>. Ad esempio, puoi aggiungere i tuoi attributi personalizzati (impostazioni) a tutti o tipi specifici di blocchi o filtrare il modo in cui vengono salvati o emessi.<\/p>\n<p>Puoi anche manipolare le categorie di blocchi, nonch\u00e9 rimuovere o consentire determinati blocchi in determinate situazioni. Oppure puoi, ad esempio, assicurarti che solo una manciata di tipi di blocchi siano consentiti per un tipo di post personalizzato.<\/p>\n<h3>Crea i tuoi blocchi personalizzati<\/h3>\n<p>La creazione di blocchi personalizzati \u00e8 forse il primo pensiero che la maggior parte degli sviluppatori di WordPress ha. I blocchi predefiniti in WordPress possono fare molto, ma se stai costruendo un tema o un plug-in pi\u00f9 complesso probabilmente hai esigenze specifiche. Ad esempio, utilizzando Gutenberg per creare una prima pagina dall&#8217;aspetto gradevole con collegamenti a contenuti e contenuti dinamici. \u00c8 possibile ottenere la maggior parte della personalizzazione utilizzando l&#8217;opzione della classe CSS che esiste per tutti i blocchi. Ma questo non \u00e8 particolarmente intuitivo.<\/p>\n<p>Scrivere i tuoi blocchi personalizzati \u00e8 probabilmente il pi\u00f9 difficile nella personalizzazione del tuo tema o plugin per Gutenberg. Ma pu\u00f2 anche essere il pi\u00f9 gratificante! Non solo sarai in grado di creare blocchi che funzionino e abbiano esattamente l&#8217;aspetto che desideri, ma \u00e8 anche un ottimo modo per apprendere rapidamente la nuova tecnologia basata su Javascript.<\/p>\n<h3>Assicurati che il tuo tema sia pronto per Gutenberg<\/h3>\n<p>Se sei uno sviluppatore di temi WordPress, dovresti essere consapevole del fatto che c&#8217;\u00e8 una buona dose di configurazione del tuo tema potrebbe aver bisogno per Gutenberg, specialmente sotto forma di <code>add_theme_support()<\/code>. Il manuale di WordPress offre una <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/themes\/theme-support\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">buona panoramica<\/a> di tutti i supporti per i temi che devi considerare per rendere il tuo tema pronto per Gutenberg.<\/p>\n<p>Poich\u00e9 WordPress predefinito gestir\u00e0 la maggior parte degli stili dei blocchi predefiniti, quindi non dovresti preoccuparti troppo dello stile di questi nel tuo tema. Ma gli sviluppatori di temi di solito sono pi\u00f9 esigenti riguardo al loro design e stile. Quindi probabilmente dovrai regolare o aggiungere uno stile a blocchi. Puoi aggiungere stili editor solo al frontend, solo editor o entrambi. Il manuale di WordPress Gutenberg fornisce una <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/themes\/theme-support\/#editor-styles\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">panoramica degli stili dell&#8217;editor<\/a> e degli stili di blocco predefiniti.<\/p>\n<p>C&#8217;\u00e8 anche un concetto di <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-templates\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">modelli di blocco<\/a> in cui puoi predefinire quali blocchi dovrebbero apparire nei post. I modelli di blocco possono essere utilizzati come segnaposto per aiutare l&#8217;editor a compilare i blocchi. Ma pu\u00f2 anche essere usato per definire un insieme fisso di blocchi e posizioni.<\/p>\n<p>E infine, ci sono funzioni disponibili per lavorare con il parser Gutenberg e come estrarre blocchi dai post. Poich\u00e9 tutti i contenuti vengono salvati con informazioni complete sul tipo di contenuto, puoi facilmente estrarre parti specifiche del contenuto del post. Un buon esempio \u00e8 estrarre il primo paragrafo dei post da mostrare come estratto. Una funzione PHP molto utile per questo concetto \u00e8 <code>[parse_blocks](https:\/\/developer.wordpress.org\/reference\/functions\/parse_blocks\/)()<\/code>, che utilizza il parser di Gutenberg sul contenuto del post fornito e in cambio otterrai un array PHP con tutte le informazioni e il contenuto del blocco.<\/p>\n<h2>Conclusione<\/h2>\n<p>Spero che questo post non solo ti abbia insegnato qualcosa sullo sviluppo per Gutenberg, ma ti abbia anche reso curioso e interessato a saperne di pi\u00f9! Come sviluppatore WordPress incentrato su PHP che inizialmente ha resistito all&#8217;idea di passare alla tecnologia basata su Javascript, posso dirti che una volta che avrai fatto il passo per conoscere il &quot;nuovo modo&quot;, sarai felice di averlo fatto. Gutenberg apre a nuovi modi per personalizzare, progettare e mostrare i contenuti di WordPress senza la necessit\u00e0 di generatori di pagine o temi con librerie pesanti per consentire contenuti di post flessibili e di bell&#8217;aspetto. Dobbiamo solo imparare a lavorarci in modo ottimale!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Questo post mira ad aiutarti come sviluppatore WordPress ma principiante Gutenberg a comprendere i concetti chiave e le basi da sviluppare per Gutenberg.<\/p>\n","protected":false},"author":1,"featured_media":220557,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,896,720,939,939,1110,814,814,720,844,844,865,865],"tags":[1168],"class_list":["post-233355","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-sviluppatore","category-gutenberg-6","category-n-a","category-plugin-2","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=233355"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233355\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/220557"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=233355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=233355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=233355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}