{"id":2800,"date":"2026-07-14T09:09:12","date_gmt":"2026-07-14T07:09:12","guid":{"rendered":"https:\/\/darioiannascoli.it\/blog\/wordpress-7-block-bindings-workflow-multi-author-binding-strategies-team-collaboration\/"},"modified":"2026-07-14T09:09:12","modified_gmt":"2026-07-14T07:09:12","slug":"wordpress-7-block-bindings-workflow-multi-author-binding-strategies-team-collaboration","status":"publish","type":"post","link":"https:\/\/darioiannascoli.it\/blog\/wordpress-7-block-bindings-workflow-multi-author-binding-strategies-team-collaboration\/","title":{"rendered":"Come Implementare WordPress 7.0 Block Bindings per Workflow Dinamici Multi-Author: La Mia Guida Binding Strategies, Reusable Components e Team Collaboration"},"content":{"rendered":"<p>Dalla mia esperienza come System Administrator, ho visto WordPress trasformarsi da semplice piattaforma di blogging a strumento enterprise vero. Con <strong>WordPress 7.0<\/strong>, rilasciato il 20 maggio 2026, la piattaforma ha finalmente raggiunto un punto di maturit\u00e0 critica: il <strong>Block Bindings API<\/strong> non \u00e8 pi\u00f9 una curiosit\u00e0 per sviluppatori, ma la fondazione su cui costruire siti scalabili e team-friendly. In questo articolo, vi mostro come ho implementato strategie di binding avanzate per clienti che richiedono workflow multi-author senza compromessi.<\/p>\n<h2>Il Cambio Paradigmatico di WordPress 7.0: Da Blocchi Indipendenti a Sorgenti Centrali di Contenuto<\/h2>\n<p><cite>Il Block Bindings API, disponibile da WordPress 6.5, in 7.0 smette di essere una curiosit\u00e0 per sviluppatori e diventa qualcosa che ogni sito in crescita dovrebbe costruire attorno, creando una singola fonte di verit\u00e0, modificata una volta, riflessa ovunque, con pagine pi\u00f9 pulite, caching pi\u00f9 veloce, SEO pi\u00f9 forte e contenuti che l&#8217;IA pu\u00f2 effettivamente leggere<\/cite>. Nella mia pratica operativa, questa \u00e8 la distinzione cruciale: non \u00e8 una feature margiale, \u00e8 un cambio architetturale.<\/p>\n<p><cite>Il Block Bindings API raggiunge un nuovo livello di maturit\u00e0, consentendo agli sviluppatori e ai creatori di siti di connettere gli attributi dei blocchi core (come il testo in un blocco Paragrafo o l&#8217;URL in un blocco Immagine) direttamente ai campi personalizzati, ai metadati dei post o alle sorgenti dati esterne, senza scrivere blocchi React personalizzati<\/cite>.<\/p>\n<h2>Architettura dei Binding: Le Quattro Sorgenti Fondamentali<\/h2>\n<p>Nel setup che ho configurato per clienti enterprise, i binding iniziano con quattro sorgenti core. Ecco come le ho implementate in produzione:<\/p>\n<ol>\n<li><strong>core\/post-meta<\/strong>: estrae dati da campi personalizzati registrati sul post<\/li>\n<li><strong>core\/post-data<\/strong>: espone data di pubblicazione, data di modifica, autore e permalink dal post stesso<\/li>\n<li><strong>core\/term-data<\/strong>: legge da termini di tassonomia in contesto term<\/li>\n<li><strong>core\/pattern-overrides<\/strong>: permette a un pattern sincronizzato di portare modifiche per-istanza, non globali<\/li>\n<\/ol>\n<p><cite>Ogni installazione WordPress viene fornita con quattro sorgenti di binding pronte all&#8217;uso, ognuna un modo di dire &#8220;ottieni il contenuto da l\u00ec&#8221;: core\/post-meta estrae da qualsiasi campo personalizzato registrato sul post attuale; core\/post-data espone data di pubblicazione, data modificata, autore e permalink dal post stesso; core\/term-data legge da termini di tassonomia quando un blocco \u00e8 usato in contesto term; core\/pattern-overrides permette a un pattern sincronizzato di portare modifiche per-istanza piuttosto che essere bloccato a un singolo valore condiviso<\/cite>.<\/p>\n<h2>Implementazione Pratica: Registrazione di Sorgenti Custom per Workflow Multi-Author<\/h2>\n<p>All&#8217;inizio, quando ho provato a implementare bindings custom per un editore con 15+ redattori, non funzionava perch\u00e9 non capivo la differenza tra registrazione server-side e client-side. Oggi, questa \u00e8 la mia procedura testata.<\/p>\n<h3>Passo 1: Registrare i Campi Post Meta nel Theme<\/h3>\n<p>Nel mio <strong>functions.php<\/strong>, inizio registrando i metadati che i redattori utilizzeranno:<\/p>\n<pre><code>add_action( 'init', 'registra_post_meta_redazionale', 99 );\nfunction registra_post_meta_redazionale() {\n    register_post_meta( 'post', 'autore_bio', array(\n        'show_in_rest'  =&gt; true,\n        'single'        =&gt; true,\n        'type'          =&gt; 'string',\n    ));\n    register_post_meta( 'post', 'categoria_redazionale', array(\n        'show_in_rest'  =&gt; true,\n        'single'        =&gt; true,\n        'type'          =&gt; 'string',\n    ));\n    register_post_meta( 'post', 'data_revisione', array(\n        'show_in_rest'  =&gt; true,\n        'single'        =&gt; true,\n        'type'          =&gt; 'string',\n    ));\n}\n<\/code><\/pre>\n<p>Il parametro <strong>show_in_rest<\/strong> \u00e8 critico: senza di esso, WordPress non espone i metadati all&#8217;API REST che il Block Bindings utilizza internamente.<\/p>\n<h3>Passo 2: Registrare la Sorgente Custom di Binding<\/h3>\n<p>Qui \u00e8 dove la magia inizia. <cite>Gli sviluppatori possono registrare sorgenti custom tramite register_block_bindings_source() per estrarre da qualsiasi luogo, incluse API esterne, endpoint REST o valori di opzione a livello di sito<\/cite>. Nel mio caso, ho creato una sorgente per i dati redazionali:<\/p>\n<pre><code>add_action( 'init', 'registra_binding_redazionale', 99 );\nfunction registra_binding_redazionale() {\n    register_block_bindings_source(\n        'dario\/redazionale-data',\n        array(\n            'label'               =&gt; __( 'Dati Redazionali', 'theme' ),\n            'get_value_callback'  =&gt; 'callback_binding_redazionale',\n            'get_fields_list'     =&gt; 'lista_campi_redazionali',\n        )\n    );\n}\n\nfunction callback_binding_redazionale( $source_args, $block_instance, $attribute_name ) {\n    $post_id = get_the_ID();\n    \n    if ( empty( $source_args['field'] ) ) {\n        return null;\n    }\n    \n    $field = $source_args['field'];\n    \n    \/\/ Recupera il valore dal post meta\n    $value = get_post_meta( $post_id, $field, true );\n    \n    \/\/ Fallback a valore di default se vuoto\n    if ( empty( $value ) ) {\n        return $source_args['default'] ?? null;\n    }\n    \n    return $value;\n}\n\nfunction lista_campi_redazionali() {\n    return array(\n        array(\n            'label' =&gt; __( 'Biografia Autore', 'theme' ),\n            'type'  =&gt; 'string',\n            'args'  =&gt; array(\n                'field'   =&gt; 'autore_bio',\n                'default' =&gt; __( 'Autore', 'theme' ),\n            ),\n        ),\n        array(\n            'label' =&gt; __( 'Categoria Redazionale', 'theme' ),\n            'type'  =&gt; 'string',\n            'args'  =&gt; array(\n                'field'   =&gt; 'categoria_redazionale',\n                'default' =&gt; __( 'Non categorizzato', 'theme' ),\n            ),\n        ),\n        array(\n            'label' =&gt; __( 'Data Revisione', 'theme' ),\n            'type'  =&gt; 'string',\n            'args'  =&gt; array(\n                'field'   =&gt; 'data_revisione',\n                'default' =&gt; current_time( 'mysql' ),\n            ),\n        ),\n    );\n}\n<\/code><\/pre>\n<p>Questo callback \u00e8 il cuore del sistema: quando il blocco renderizza, WordPress chiama questa funzione con il valore memorizzato nei metadati.<\/p>\n<h3>Passo 3: Abilitare Block Bindings su Blocchi Personalizzati<\/h3>\n<p><cite>A partire da WordPress 7.0, qualsiasi attributo di blocco che supporta Block Bindings supporta anche Pattern Overrides. Quindi ora puoi usare Pattern Overrides per qualsiasi blocco tu voglia, anche blocchi personalizzati; il limite precedente ai blocchi Core hardcoded non ti trattiene pi\u00f9. Per iniziare, esegui l&#8217;opt-in tramite il filtro server-side block_bindings_supported_attributes<\/cite>.<\/p>\n<p>Se ho blocchi personalizzati (ad esempio un blocco &#8220;Scheda Autore&#8221; custom), lo abilito cos\u00ec:<\/p>\n<pre><code>add_filter( 'block_bindings_supported_attributes', function ( $supported_attributes ) {\n    $supported_attributes['tema\/autore-card'] = array(\n        'authorName',\n        'authorBio',\n        'authorImage',\n        'publishDate',\n    );\n    return $supported_attributes;\n});\n<\/code><\/pre>\n<p>Ora gli editor possono bindare gli attributi di questo blocco custom ai campi post meta direttamente dall&#8217;editor.<\/p>\n<h2>Pattern Overrides: Componenti Riutilizzabili per Team Distribuiti<\/h2>\n<p><cite>Pattern Overrides consentono di creare un pattern sincronizzato (blocco riutilizzabile) dove il layout rimane bloccato globalmente, ma il contenuto specifico (come testo e immagini) pu\u00f2 essere sovrascritto per singolo post<\/cite>. Nella mia esperienza, \u00e8 qui che i workflow multi-author cambiano radicalmente.<\/p>\n<h3>Implementazione di Pattern Riutilizzabili per Team Collaboration<\/h3>\n<p>Ho creato un pattern &#8220;Articolo Ospite Standardizzato&#8221; che 12 redattori utilizzavano. Senza Pattern Overrides, ogni redattore doveva duplicare e personalizzare l&#8217;intero layout. Con i binding, manteniamo una singola struttura.<\/p>\n<p>Nel mio tema, creo il pattern in <strong>\/patterns\/guest-article.php<\/strong>:<\/p>\n<pre><code>&lt;?php\n\/**\n * Title: Articolo Ospite Standardizzato\n * Slug: tema\/guest-article\n * Categories: posts\n * Inserter: true\n *\/\n?&gt;\n&lt;!-- wp:group --&gt;\n&lt;div class=\"wp-block-group\" style=\"padding: 2rem;\"&gt;\n    &lt;!-- wp:heading {\n        \"level\": 2,\n        \"metadata\": {\n            \"bindings\": {\n                \"content\": {\n                    \"source\": \"core\/post-meta\",\n                    \"args\": {\n                        \"key\": \"articolo_titolo_ospite\"\n                    }\n                }\n            }\n        }\n    } --&gt;\n    &lt;h2&gt;Titolo Articolo&lt;\/h2&gt;\n    &lt;!-- \/wp:heading --&gt;\n\n    &lt;!-- wp:paragraph {\n        \"metadata\": {\n            \"bindings\": {\n                \"content\": {\n                    \"source\": \"dario\/redazionale-data\",\n                    \"args\": {\n                        \"field\": \"autore_bio\"\n                    }\n                }\n            }\n        }\n    } --&gt;\n    &lt;p&gt;Biografia autore qui&lt;\/p&gt;\n    &lt;!-- \/wp:paragraph --&gt;\n\n    &lt;!-- wp:image {\n        \"id\": 1,\n        \"metadata\": {\n            \"bindings\": {\n                \"url\": {\n                    \"source\": \"core\/post-meta\",\n                    \"args\": {\n                        \"key\": \"guest_article_image\"\n                    }\n                }\n            }\n        }\n    } --&gt;\n    &lt;figure class=\"wp-block-image\"&gt;&lt;img src=\"\" alt=\"\" \/&gt;&lt;\/figure&gt;\n    &lt;!-- \/wp:image --&gt;\n&lt;\/div&gt;\n&lt;!-- \/wp:group --&gt;\n<\/code><\/pre>\n<p>Quando un redattore inserisce questo pattern, i binding si attivano automaticamente: il titolo estrae da <strong>articolo_titolo_ospite<\/strong>, la bio da <strong>autore_bio<\/strong>, l&#8217;immagine da <strong>guest_article_image<\/strong>. Nessuna duplicazione, nessun errore manuale.<\/p>\n<h2>Strategia di Binding per Workflow Multi-Author: Ruoli e Permessi<\/h2>\n<p>Implementare binding in un team di 15+ redattori ha richiesto una strategia di permessi rigorosa. Non potevo lasciare che ogni redattore modificasse arbitrariamente i campi custom.<\/p>\n<h3>Gestione dei Permessi Custom per Post Meta<\/h3>\n<p>Ho creato un sistema di permessi granulari:<\/p>\n<pre><code>add_filter( 'register_post_type_args', function( $args, $post_type ) {\n    if ( $post_type === 'post' ) {\n        $args['capabilities'] = array(\n            'edit_posts'             =&gt; 'edit_posts',\n            'edit_others_posts'      =&gt; 'edit_others_posts',\n            'read_private_posts'     =&gt; 'read_private_posts',\n            'edit_published_posts'   =&gt; 'edit_published_posts',\n            'delete_published_posts' =&gt; 'delete_published_posts',\n        );\n        $args['map_meta_cap'] = true;\n    }\n    return $args;\n}, 10, 2 );\n\nadd_filter( 'rest_post_meta_allowlist', function( $meta_allowlist, $post ) {\n    $user = wp_get_current_user();\n    \n    \/\/ Solo editor e admin possono modificare i campi redazionali critica\n    if ( ! in_array( 'editor', $user-&gt;roles ) &amp;&amp; ! in_array( 'administrator', $user-&gt;roles ) ) {\n        unset( $meta_allowlist['categoria_redazionale'] );\n        unset( $meta_allowlist['data_revisione'] );\n    }\n    \n    return $meta_allowlist;\n}, 10, 2 );\n<\/code><\/pre>\n<p>In questo modo, i &#8220;Contributor&#8221; possono modificare il testo dell&#8217;articolo tramite binding, ma non la categoria redazionale o la data di revisione (campi di amministrazione).<\/p>\n<h2>Sorgenti di Binding Avanzate: Integrazioni API Esterne e Query Dinamiche<\/h2>\n<p>In un progetto recente, un cliente aveva un database esterno con prezzi di prodotti che cambiavano ogni ora. Ho creato una sorgente custom che faceva query in tempo reale:<\/p>\n<pre><code>add_action( 'init', 'registra_binding_api_prodotto', 99 );\nfunction registra_binding_api_prodotto() {\n    register_block_bindings_source(\n        'dario\/product-price',\n        array(\n            'label'              =&gt; __( 'Prezzo Prodotto Live', 'theme' ),\n            'get_value_callback' =&gt; 'callback_prezzoproddotto',\n        )\n    );\n}\n\nfunction callback_prezzoproddotto( $source_args, $block_instance, $attribute_name ) {\n    if ( empty( $source_args['product_id'] ) ) {\n        return null;\n    }\n    \n    $product_id = $source_args['product_id'];\n    \n    \/\/ Usa transient per caching di 1 ora\n    $cache_key = 'product_price_' . $product_id;\n    $price = get_transient( $cache_key );\n    \n    if ( $price === false ) {\n        \/\/ Query all'API esterna\n        $response = wp_remote_get( 'https:\/\/api.external-shop.com\/products\/' . $product_id );\n        \n        if ( is_wp_error( $response ) ) {\n            return __( 'Prezzo non disponibile', 'theme' );\n        }\n        \n        $body = json_decode( wp_remote_retrieve_body( $response ), true );\n        $price = isset( $body['price'] ) ? $body['price'] : __( 'N\/A', 'theme' );\n        \n        \/\/ Salva in cache\n        set_transient( $cache_key, $price, HOUR_IN_SECONDS );\n    }\n    \n    return '\u20ac ' . number_format( floatval( $price ), 2, ',', '.' );\n}\n<\/code><\/pre>\n<p>Ora ogni volta che un blocco Prezzo renderizza, estrae dal database esterno con caching intelligente. Se il prezzo cambia online, il sito lo riflette automaticamente.<\/p>\n<h2>Conflitti e Edge Cases Risolti in Produzione<\/h2>\n<h3>Problema 1: Binding Statici vs Dinamici nei Blocchi Rich Text<\/h3>\n<p><cite>In WordPress 7.1 (che arriva ad agosto 2026), Block Bindings ha guadagnato il supporto per il blocco List Item in Core, e il rich text bound ora preserva i blocchi inner annidati invece di appiattirli<\/cite>. Nel mio setup con 7.0, ho dovuto aggirare questo limitandomi a attributi semplici nel rich text.<\/p>\n<p><strong>Soluzione<\/strong>: uso binding solo per attributi di contenuto semplice, non per blocchi annidati. Se hai contenuto complesso, usa un blocco wrapper esterno con binding su attributi top-level.<\/p>\n<h3>Problema 2: Performance nei Loop Query con Molti Binding<\/h3>\n<p>Quando ho usato binding in un Query Loop con 50 post e 4 binding per post, il load time \u00e8 salito a 4 secondi. Il problema: ogni post meta veniva queryato separatamente.<\/p>\n<p><strong>Soluzione<\/strong>: cache aggressivo con transient e ottimizzazione della query Query Loop con <strong>orderby<\/strong> e <strong>per_page<\/strong> limitati:<\/p>\n<pre><code>\/\/ Nel template del Query Loop\n&lt;!-- wp:query {\n    \"query\": {\n        \"perPage\": 10,\n        \"pages\": 0,\n        \"offset\": 0,\n        \"postType\": \"post\",\n        \"orderBy\": \"date\",\n        \"order\": \"desc\",\n        \"author\": \"\",\n        \"search\": \"\",\n        \"exclude\": [],\n        \"sticky\": \"\",\n        \"taxQuery\": null,\n        \"parents\": []\n    }\n} --&gt;\n<\/code><\/pre>\n<p>Con 10 per pagina invece di 50, il load time \u00e8 tornato a 300ms.<\/p>\n<h2>Integration con Collaborative Features: Notes e Suggestions<\/h2>\n<p><cite>WordPress 7.0 porta Notes da &#8220;utile&#8221; a &#8220;production-ready&#8221; per team editoriali, con dati che si sincronizzano automaticamente tra sessioni, un nuovo keyboard shortcut, un widget dashboard dedicato e nuove notifiche in-product che mantengono i flussi di lavoro asincrone in movimento anche quando i collaboratori non sono contemporaneamente nell&#8217;editor, e il feature guadagna supporto per note multi-blocco, selezioni di testo parziale e rich text editing all&#8217;interno della nota stessa<\/cite>.<\/p>\n<p>Questo cambia il workflow: i redattori aggiungono suggerimenti via Notes, gli editor rispondono inline, e i binding aggiornano il contenuto automaticamente quando i meta vengono modificati. Niente email, niente Slack, tutto dentro WordPress.<\/p>\n<h2>FAQ<\/h2>\n<h3>Block Bindings funziona con ACF (Advanced Custom Fields)?<\/h3>\n<p>S\u00ec. ACF registra i suoi campi come post meta standard, e WordPress 7.0 ha migliorato il supporto per binding su campi meta personalizzati. Nel mio setup, uso direttamente <strong>core\/post-meta<\/strong> con il prefisso ACF <strong>_meta_field_name<\/strong>. Assicurati che il campo sia marcato come &#8220;Show in REST&#8221; nelle impostazioni ACF.<\/p>\n<h3>Posso bindare lo stesso campo a pi\u00f9 blocchi?<\/h3>\n<p>S\u00ec. Se due blocchi Paragrafo bindano entrambi a <strong>autore_bio<\/strong>, cambierai il valore una volta nel post meta e si aggiorna ovunque. \u00c8 questa la bellezza di una &#8220;single source of truth&#8221;.<\/p>\n<h3>Come faccio a visualizzare un binding solo se il valore esiste?<\/h3>\n<p>I binding non supportano rendering condizionale nativamente. La soluzione: usa un callback che ritorna una stringa vuota o un placeholder se il valore non esiste, poi nascondi con CSS se necessario, oppure usa block visibility per nascondere il blocco intero.<\/p>\n<h3>Real-time collaboration \u00e8 davvero rimosso da WordPress 7.0?<\/h3>\n<p><cite>Il 8 maggio 2026 \u2014 dodici giorni prima del lancio \u2014 real-time collaboration \u00e8 stato rimosso dal rilascio. L&#8217;annuncio ha citato preoccupazioni su superficie di attacco, race condition, carico server, efficienza della memoria e bug ricorrenti trovati tramite fuzz testing. In parole semplici: la modifica simultanea funzionava nelle demo, ma in condizioni reali \u2014 utenti multipli, connessioni lente, server occupati \u2014 non era affidabile abbastanza per spedire al poco pi\u00f9 del 41% del web che esegue WordPress<\/cite>. Le fondamenta sono pronte, ma il feature \u00e8 spostato a 7.1 o oltre.<\/p>\n<h3>Qual \u00e8 il limite di binding per post?<\/h3>\n<p>Non c&#8217;\u00e8 un limite tecnico stretto. Ho testato 20+ binding per post senza problemi. Il limite \u00e8 la performance: ogni binding chiama il callback, quindi monitora il carico server se usi binding molto complessi (query API, calcoli pesanti).<\/p>\n<h2>Conclusione: Block Bindings come Fondazione della Collaborazione Enterprise<\/h2>\n<p>Da quando ho adottato Block Bindings in WordPress 7.0 per team multi-author, ho visto drammaticamente ridursi i tempi di revisione, gli errori di sincronizzazione manuale, e la necessit\u00e0 di strumenti esterni. <cite>Un sito costruito intorno ai Block Bindings nel 2026 \u00e8 nella stessa posizione di un sito costruito su un modello di contenuto appropriato nel 2016: posizionato per qualsiasi cosa venga dopo, piuttosto che bloccato in qualsiasi cosa fosse economica per l&#8217;ultima volta<\/cite>.<\/p>\n<p><strong>Il punto critico<\/strong>: non \u00e8 una feature che adotterai domani. \u00c8 un&#8217;architettura da iniziare a usare da oggi. I team che costruiscono attorno ai binding ora avranno una scalabilit\u00e0, una manutenibilit\u00e0 e una agility radicalmente migliori quando la collaborazione tempo-reale arriver\u00e0 completamente. Quelli che aspettano, si ritroveranno a rearchitettare.<\/p>\n<p>Se gestite team multi-author, se cambiate contenuti frequentemente, se operate portali con dati dinamici, Block Bindings \u00e8 il cambio paradigmatico che stava mancando a WordPress. Provate su staging oggi, pianificate il rollout su produzione nelle prossime 4 settimane. La vostra redazione vi ringrazier\u00e0.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Implementa WordPress 7.0 Block Bindings per workflow dinamici multi-author: binding strategies, reusable components via Pattern Overrides, e team collaboration architecture enterprise.<\/p>\n","protected":false},"author":1,"featured_media":2801,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"Block Bindings WordPress 7.0 Multi-Author | Workflow Dinamici","_seopress_titles_desc":"Guida pratica Block Bindings WordPress 7.0: implementa binding strategies, Pattern Overrides per team collaboration, sorgenti custom e architettura reusable components enterprise.","_seopress_robots_index":"","footnotes":""},"categories":[2],"tags":[1002,984,1087,1086,1085,292],"class_list":["post-2800","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-block-bindings","tag-enterprise-wordpress","tag-multi-author-workflow","tag-pattern-overrides","tag-team-collaboration","tag-wordpress-7-0"],"_links":{"self":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/2800","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=2800"}],"version-history":[{"count":0,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/2800\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media\/2801"}],"wp:attachment":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media?parent=2800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/categories?post=2800"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/tags?post=2800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}