{"id":82886,"date":"2026-01-09T09:48:52","date_gmt":"2026-01-09T08:48:52","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=82886&#038;preview=true&#038;preview_id=82886"},"modified":"2026-01-12T13:42:29","modified_gmt":"2026-01-12T12:42:29","slug":"api-block-bindings-wordpress","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/","title":{"rendered":"L&#8217;API WordPress Block Bindings: cos&#8217;\u00e8 e come usarla per costruire siti web dinamici"},"content":{"rendered":"<p>L&#8217;API Block Bindings \u00e8 un potente strumento dell&#8217;editor a blocchi che permette di associare qualsiasi fonte di dati agli attributi di un blocco.<\/p>\n<p>Questa API \u00e8 stata introdotta per la prima volta <span style=\"margin: 0px;padding: 0px\">in <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-6-5\/#block-bindings-api\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress 6.5<\/a> e, nella sua<\/span> implementazione <span style=\"margin: 0px;padding: 0px\">iniziale<\/span>, permetteva agli utenti di WordPress di visualizzare i valori dei campi personalizzati all&#8217;interno dei post e delle pagine.<\/p>\n<p>L&#8217;API Block Bindings funge da base per altre funzioni di WordPress. Ne sono un esempio gli <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-6-6\/#synced-pattern-overrides\">override dei pattern sincronizzati<\/a> e la variazione del blocco <strong>Post Date<\/strong> introdotta in <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-6-9\/#block-bindings-api-improvements\">WordPress 6.9<\/a>.<\/p>\n<p>Quindi, cos&#8217;\u00e8 esattamente l&#8217;API Block Bindings? E a cosa serve? Ecco qui una semplice introduzione e un esempio reale che mostra come creare associazioni tra i blocchi di Gutenberg e le fonti di dati esterne.<\/p>\n<p>Mettiamoci al lavoro.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>L&#8217;API Block Bindings: concetti di base<\/h2>\n<p>Come abbiamo detto in precedenza, l&#8217;API Block Bindings permette di creare associazioni tra una fonte di dati e gli attributi di un blocco.<\/p>\n<p>Se non hai familiarit\u00e0 con gli attributi dei blocchi, naviga nella directory <code>src<\/code> della libreria dei blocchi del progetto Gutenberg su GitHub, trova il blocco Paragraph e apri il <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/blob\/trunk\/packages\/block-library\/src\/paragraph\/block.json\" target=\"_blank\" rel=\"noopener noreferrer\">file <code>block.json<\/code><\/a>. La propriet\u00e0 <code>attributes<\/code> fornisce un elenco degli attributi del blocco Paragraph.<\/p>\n<pre><code class=\"language-json\">\"attributes\": {\n\t\"content\": {\n\t\t\"type\": \"rich-text\",\n\t\t\"source\": \"rich-text\",\n\t\t\"selector\": \"p\",\n\t\t\"role\": \"content\"\n\t},\n\t\"dropCap\": {\n\t\t\"type\": \"boolean\",\n\t\t\"default\": false\n\t},\n\t\"placeholder\": {\n\t\t\"type\": \"string\"\n\t},\n\t\"direction\": {\n\t\t\"type\": \"string\",\n\t\t\"enum\": [ \"ltr\", \"rtl\" ]\n\t}\n},<\/code><\/pre>\n<p>I seguenti blocchi supportano l&#8217;API Block Bindings a partire da WordPress 6.9 e possono quindi essere collegati ai campi personalizzati:<\/p>\n<table>\n<thead>\n<tr>\n<th>Blocchi supportati<\/th>\n<th>Attributi<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Paragrafo<\/td>\n<td>contenuto<\/td>\n<\/tr>\n<tr>\n<td>Titolo<\/td>\n<td>contenuto<\/td>\n<\/tr>\n<tr>\n<td>Immagine<\/td>\n<td>id, url, alt, titolo, didascalia<\/td>\n<\/tr>\n<tr>\n<td>Pulsante<\/td>\n<td>testo, url, linkTarget, rel<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Per collegare i campi personalizzati ai blocchi di Gutenberg, bisogna prima <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/\" target=\"_blank\" rel=\"noopener noreferrer\">registrarli<\/a>. Il codice seguente registra un campo personalizzato tramite un plugin di WordPress o il <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-functions-php\/\">file <code>functions.php<\/code><\/a> del tuo tema:<\/p>\n<pre><code class=\"language-php\">add_action( 'init', function() {\n\tregister_post_meta( 'your-post-type', 'myplugin_meta_key', [\n\t\t'show_in_rest'  =&gt; true,\n\t\t'single'        =&gt; true,\n\t\t'type'          =&gt; 'string',\n\t\t'description'   =&gt; __( 'City name', 'textdomain' ),\n\t\t'auth_callback' =&gt; 'is_user_logged_in',\n\t] );\n} );<\/code><\/pre>\n<p><code>register_post_meta<\/code> accetta un array di attributi che definiscono le caratteristiche dei campi personalizzati; la documentazione ne fornisce un <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_meta\/\">elenco completo<\/a>. Per rendere un campo personalizzato disponibile all&#8217;API Block Bindings, \u00e8 necessario impostare <code>show_in_rest<\/code> su true. A partire da WordPress 6.9, <code>string<\/code> \u00e8 l&#8217;unico tipo supportato.<\/p>\n<p>Per vedere l&#8217;API Block Bindings in azione con i campi personalizzati, crea un nuovo plugin WordPress e registra un meta-campo con il codice mostrato sopra.<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/**\n * Plugin Name: Block Bindings example\n * Description: Example plugin that uses the Block Bindings API.\n * Version: 1.0.0\n * Author: Your Name\n * License: GPL2 or later\n * Text Domain: block-bindings-example\n *\/\n\nif ( ! defined( 'ABSPATH' ) ) {\n\texit;\n}\n\nadd_action( 'init', function() {\n\tregister_post_meta( '', 'block_bindings_image_url', [\n\t\t'show_in_rest'  =&gt; true,\n\t\t'single'\t    =&gt; true,\n\t\t'type'\t\t    =&gt; 'string',\n\t\t'description'   =&gt; __( 'City name', 'block-bindings-example' ),\n\t\t'auth_callback' =&gt; 'is_user_logged_in',\n\t] );\n} );<\/code><\/pre>\n<p>Nella dashboard di WordPress, attiva il plugin. Poi, vai nella schermata Messaggi e crea un nuovo post. Quando selezioni un blocco supportato, il pannello <strong>Attributi<\/strong> nella barra laterale delle impostazioni del blocco visualizzer\u00e0 l&#8217;elenco degli attributi che possono essere associati a un campo personalizzato registrato.<\/p>\n<figure id=\"attachment_202443\" aria-describedby=\"caption-attachment-202443\" style=\"width: 2094px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202443\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/image-block-attributes-block-bindings-ui.png\" alt=\"Uno screenshot che mostra gli attributi del blocco Immagine che supportano le associazioni tra blocchi\" width=\"2094\" height=\"1016\"><figcaption id=\"caption-attachment-202443\" class=\"wp-caption-text\">Attributi del blocco immagine che supportano le associazioni del blocco<\/figcaption><\/figure>\n<p>Apri il menu <strong>Opzioni<\/strong> nell&#8217;angolo in alto a destra e seleziona <strong>Preferenze<\/strong>. Nella scheda <strong>Generale<\/strong>, individua la sezione <strong>Avanzate<\/strong> e attiva i campi personalizzati. Salva le modifiche, attendi che la pagina venga ricaricata e torna all&#8217;editor.<\/p>\n<figure id=\"attachment_202434\" aria-describedby=\"caption-attachment-202434\" style=\"width: 1490px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202434\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/enable-custom-fields.png\" alt=\"Uno screenshot delle preferenze dell'editor a blocchi.\" width=\"1490\" height=\"1006\"><figcaption id=\"caption-attachment-202434\" class=\"wp-caption-text\">Abilita i campi personalizzati nelle Preferenze dell&#8217;editor.<\/figcaption><\/figure>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Stiamo supponendo di voler aggiungere i campi personalizzati manualmente. La creazione di un&#8217;<a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-6-7\/#meta-boxes-in-the-post-editor\">interfaccia che semplifichi<\/a> l&#8217;inserimento di campi personalizzati va oltre lo scopo di questo articolo.<\/p>\n<\/aside>\n\n<p>Il prossimo passo consiste nell&#8217;inserire un blocco Immagine. Con il blocco selezionato, clicca sull&#8217;icona <strong>+<\/strong> nel pannello <strong>Attributi<\/strong> e seleziona l&#8217;attributo <strong>url<\/strong>. Il pannello Attributi mostrer\u00e0 un elenco di meta-campi disponibili. Seleziona nuovamente url. Ora vedrai l&#8217;elenco dei meta-campi disponibili per il tipo di post corrente.<\/p>\n<figure id=\"attachment_202436\" aria-describedby=\"caption-attachment-202436\" style=\"width: 2162px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202436\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/attributes-panel-image-block.png\" alt=\"Uno screenshot che mostra un campo personalizzato e l'interfaccia utente Block Bindings.\" width=\"2162\" height=\"930\"><figcaption id=\"caption-attachment-202436\" class=\"wp-caption-text\">Associare un campo personalizzato all&#8217;attributo url di un blocco Immagine nell&#8217;interfaccia utente Block Bindings.<\/figcaption><\/figure>\n<p>Seleziona il tuo meta-campo e salva il post. Ora dovresti vedere la tua immagine sia nell&#8217;editor che nel frontend.<\/p>\n<figure id=\"attachment_202439\" aria-describedby=\"caption-attachment-202439\" style=\"width: 2162px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202439\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/block-bindings-image-url.jpg\" alt=\"Uno screenshot dell'editor a blocchi con un blocco Immagine con l'attributo url associato al valore di un campo personalizzato.\" width=\"2162\" height=\"1074\"><figcaption id=\"caption-attachment-202439\" class=\"wp-caption-text\">Un blocco Immagine con l&#8217;attributo url legato al valore di un campo personalizzato.<\/figcaption><\/figure>\n<p>A partire dalla <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-6-7\/\">versione 6.7 di WordPress<\/a>, puoi utilizzare l&#8217;attributo Label per visualizzare del testo nell&#8217;interfaccia dell&#8217;editor. Il seguente blocco di codice mostra un esempio:<\/p>\n<pre><code class=\"language-php\">add_action( 'init', function() {\n\tregister_post_meta( '', 'block_bindings_image_url', [\n\t\t'show_in_rest'  =&gt; true,\n\t\t'single'        =&gt; true,\n\t\t'type'          =&gt; 'string',\n\t\t'description'   =&gt; __( 'City image', 'block-bindings-example' ),\n\t\t'label'         =&gt; __('Image URL'),\n\t\t'auth_callback' =&gt; 'is_user_logged_in',\n\t] );\n} );<\/code><\/pre>\n<figure id=\"attachment_202441\" aria-describedby=\"caption-attachment-202441\" style=\"width: 2148px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202441\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/custom-field-label-in-block-bindings-ui.png\" alt=\"Uno screenshot che mostra le etichette dei campi personalizzati nell'interfaccia utente di Block Bindings\" width=\"2148\" height=\"1134\"><figcaption id=\"caption-attachment-202441\" class=\"wp-caption-text\">Etichette di campo personalizzate nell&#8217;interfaccia utente di Block Bindings<\/figcaption><\/figure>\n<p>Quando apri l&#8217;editor di codice, puoi vedere un oggetto JSON all&#8217;interno del delimitatore del blocco immagine. La propriet\u00e0 <code>metadata.bindings.url<\/code> mostra che l&#8217;<code>url<\/code> del blocco immagine \u00e8 collegato a un campo di metadati.<\/p>\n<pre><code class=\"language-html\">&lt;!-- wp:image {\n\t\"metadata\":{\n\t\t\"bindings\":{\n\t\t\t\"url\":{\n\t\t\t\t\"source\":\"core\/post-meta\",\n\t\t\t\t\"args\":{\n\t\t\t\t\t\"key\":\"block_bindings_image_url\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} --&gt;\n&lt;figure class=\"wp-block-image\"&gt;&lt;img alt=\"\/&gt;&lt;\/figure&gt;\n&lt;!-- \/wp:image --&gt;<\/code><\/pre>\n<p>La propriet\u00e0 <code>source<\/code> specifica l&#8217;origine dei dati per le associazioni del blocco. La propriet\u00e0 <code>args.key<\/code> stabilisce un riferimento al campo di metadati.<\/p>\n<p>L&#8217;aspetto pi\u00f9 interessante dell&#8217;API Block Bindings \u00e8 la possibilit\u00e0 di registrare fonti di dati personalizzate, il che apre nuove ed entusiasmanti possibilit\u00e0 per gli sviluppatori. Di seguito vedremo come utilizzare i dati di servizi di terze parti con l&#8217;API Block Bindings.<\/p>\n<h2>Come registrare fonti di dati Block Bindings personalizzate: un esempio reale<\/h2>\n<p>Una volta acquisita familiarit\u00e0 con i concetti di base dell&#8217;API Block Bindings, possiamo passare agli aspetti pi\u00f9 avanzati e interessanti per gli sviluppatori.<\/p>\n<p>Come abbiamo gi\u00e0 detto, l&#8217;API Block Bindings permette di registrare fonti di dati personalizzate. Ci\u00f2 implica la possibilit\u00e0 di recuperare i dati da una fonte remota e\/o di manipolare i dati grezzi per generare informazioni utili da inserire automaticamente nei tuoi contenuti.<\/p>\n<p>In questa sezione vedremo come massimizzare il potenziale dei Block Bindings attraverso un esempio pratico che potrai utilizzare come base per lo sviluppo delle tue applicazioni personalizzate.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Tieni presente che il codice fornito nel seguente esempio \u00e8 solo a scopo dimostrativo e non deve essere utilizzato in produzione.<\/p>\n<\/aside>\n\n<p>Supponiamo che tu voglia recuperare dati da una fonte esterna e visualizzarli nei tuoi post, pagine o <a href=\"https:\/\/kinsta.com\/it\/blog\/custom-post-type-wordpress\/\">tipi di post personalizzati<\/a>. Ad esempio, potresti interrogare l&#8217;API di un servizio meteo inviando una richiesta con la latitudine e la longitudine di una citt\u00e0 per ottenere dati meteo in tempo reale, che potresti poi visualizzare sul tuo sito.<\/p>\n<p>Grazie all&#8217;API Block Bindings, puoi visualizzare la temperatura attuale o fornire ai tuoi lettori le previsioni del tempo per i prossimi giorni. Puoi anche modificare programmaticamente l&#8217;attributo <code>url<\/code> di una o pi\u00f9 immagini della pagina in base alle condizioni meteorologiche.<\/p>\n<p>Per aggiungere questa funzione al tuo sito WordPress, devi creare un plugin. Segui questi passaggi:<\/p>\n<h3>Passo 1: creare un plugin di base<\/h3>\n<p>Il primo passo consiste nel creare i file del plugin. Naviga nella directory <code>wp-content\/plugins<\/code> della tua installazione di WordPress e crea una nuova cartella chiamata <code>block-bindings-example<\/code>. All&#8217;interno di questa cartella, aggiungi i seguenti file:<\/p>\n<pre><code>\/wp-content\/plugins\/\n\u2514\u2500\u2500 \/block-bindings-example\/\n\t\u251c\u2500\u2500 block-bindings-example.php\n\t\u2514\u2500\u2500 \/includes\/\n\t\t\u251c\u2500\u2500 binding-sources.php\n\t\t\u251c\u2500\u2500 meta-fields.php\n\t\t\u2514\u2500\u2500 weather-api.php<\/code><\/pre>\n<p>Apri il file <code>block-bindings-example.php<\/code> nel tuo <a href=\"https:\/\/kinsta.com\/it\/blog\/editor-html-gratuiti\/\">editor di codice<\/a> preferito e aggiungi il seguente codice:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/**\n * Plugin Name: Block Bindings Example\n * Description: Use WordPress Block Bindings API (6.5+) to dynamically bind weather data from Open-Meteo API to Gutenberg blocks using custom post meta and a custom binding source.\n * Version: 1.0.0\n * Author: Your Name\n * License: GPL2 or later\n * Text Domain: block-bindings-example\n *\/\n\nif ( ! defined( 'ABSPATH' ) ) {\n\texit; \/\/ Exit if accessed directly\n}\n\n\/**\n * Cache duration for weather data: 30 minutes\n * This reduces API calls and improves performance\n *\/\ndefine( 'BB_WEATHER_CACHE_TIME', HOUR_IN_SECONDS \/ 2 );\n\nrequire_once plugin_dir_path( __FILE__ ) . 'includes\/meta-fields.php';\nrequire_once plugin_dir_path( __FILE__ ) . 'includes\/binding-sources.php';\nrequire_once plugin_dir_path( __FILE__ ) . 'includes\/weather-api.php';\n\n\/**\n * Setup function\n *\/\nfunction bb_init_setup() {\n\tbb_register_post_meta();\n\tbb_register_binding_sources();\n}\nadd_action( 'init', 'bb_init_setup' );<\/code><\/pre>\n<p>Ecco cosa fa questo codice:<\/p>\n<ul>\n<li>La costante <code>BB_WEATHER_CACHE_TIME<\/code> determina per quanto tempo i dati meteo vengono memorizzati nella cache. Questo riduce le chiamate all&#8217;API, migliora le prestazioni della pagina e riduce i costi del servizio.<\/li>\n<li>Le espressioni di <code>require_once<\/code> includono gli script necessari per registrare i meta-campi, registrare la fonte di binding e recuperare i dati dall&#8217;API.<\/li>\n<li>La funzione di setup chiama due funzioni che registrano i meta-campi del post e le fonti di binding personalizzate.<\/li>\n<\/ul>\n<h3>Passo 2: registrare i meta-campi del post<\/h3>\n<p>Il passo successivo consiste nel registrare i meta-campi necessari per il tuo caso d&#8217;uso. Apri il file <code>meta-fields.php<\/code> nella cartella <code>includes<\/code> e aggiungi il seguente codice:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/**\n * Registers custom post meta fields so they appear in the REST API and Block Bindings editor panel\n *\/\nfunction bb_register_post_meta() {\n\n\tif ( ! function_exists( 'register_post_meta' ) ) {\n\t\treturn;\n\t}\n\n\tregister_post_meta( 'post', 'block_bindings_city_name', [\n\t\t'show_in_rest'  =&gt; true,\n\t\t'single'        =&gt; true,\n\t\t'type'          =&gt; 'string',\n\t\t'description'   =&gt; __( 'Add city name', 'block-bindings-example' ),\n\t\t'label'         =&gt; __( 'City name', 'block-bindings-example' ),\n\t\t'auth_callback' =&gt; 'is_user_logged_in',\n\t] );\n\n\tregister_post_meta( 'post', 'block_bindings_image_url', [\n\t\t'show_in_rest'  =&gt; true,\n\t\t'single'        =&gt; true,\n\t\t'type'          =&gt; 'string',\n\t\t'description'   =&gt; __( 'Add city image URL', 'block-bindings-example' ),\n\t\t'label'         =&gt; __( 'City image URL', 'block-bindings-example' ),\n\t\t'auth_callback' =&gt; 'is_user_logged_in',\n\t] );\n\n\tregister_post_meta( 'post', 'block_bindings_city_lat', [\n\t\t'show_in_rest'  =&gt; true,\n\t\t'single'        =&gt; true,\n\t\t'type'          =&gt; 'string',\n\t\t'description'   =&gt; __( 'Add city latitude', 'block-bindings-example' ),\n\t\t'label'         =&gt; __( 'Latitude', 'block-bindings-example' ),\n\t\t'auth_callback' =&gt; 'is_user_logged_in',\n\t] );\n\n\tregister_post_meta( 'post', 'block_bindings_city_lng', [\n\t\t'show_in_rest'  =&gt; true,\n\t\t'single'        =&gt; true,\n\t\t'type'          =&gt; 'string',\n\t\t'description'   =&gt; __( 'Add city longitude', 'block-bindings-example' ),\n\t\t'label'         =&gt; __( 'Longitude', 'block-bindings-example' ),\n\t\t'auth_callback' =&gt; 'is_user_logged_in',\n\t] );\n}<\/code><\/pre>\n<p>La funzione <code>register_post_meta<\/code> registra un meta-campo da utilizzare nei post. Nota che per utilizzare i meta-campi registrati in questo modo con l&#8217;API Block Bindings, devi impostare <code>show_in_rest<\/code> su <code>true<\/code> e <code>type<\/code> su <code>string<\/code>. Per maggiori informazioni, consulta la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/\" target=\"_blank\" rel=\"noopener noreferrer\">documentazione<\/a>.<\/p>\n<h3>Passo 3: registrare la source Block Bindings<\/h3>\n<p>\u00c8 il momento di registrare la fonte dell&#8217;associazione. Apri il file <code>binding-sources.php<\/code> e aggiungi il seguente codice:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/**\n * Registers a custom Block Bindings source: bb\/weather-condition\n *\/\nfunction bb_register_binding_sources() {\n\n\tif ( ! function_exists( 'register_block_bindings_source' ) ) {\n\t\treturn;\n\t}\n\t\n\tregister_block_bindings_source(\n\t\t'bb\/weather-condition',\n\t\t[\n\t\t\t'label'              =&gt; __( 'Weather Condition', 'block-bindings-example' ),\n\t\t\t'get_value_callback' =&gt; 'bb_get_weather_condition_value',\n\t\t\t'uses_context'       =&gt; [ 'postId' ], \/\/ We need postId to get meta values\n\t\t]\n\t);\n}<\/code><\/pre>\n<p>La funzione <code>register_block_bindings_source()<\/code> richiede il nome della fonte e una funzione di callback che recuperi i dati da una fonte e restituisca il valore manipolato.<\/p>\n<p>Poi, nello stesso file <code>binding-sources.php<\/code>, definisci la funzione di callback.<\/p>\n<pre><code class=\"language-php\">function bb_get_weather_condition_value( array $source_args, WP_Block $block_instance ) {\n\n\t$key = $source_args['key'] ?? null;\n\tif ( ! $key ) {\n\t\treturn null;\n\t}\n\n\t\/\/ Get current post ID from block context (always available in post content)\n\t$post_id = $block_instance-&gt;context['postId'] ?? null;\n\n\t\/\/ Fallback: use global loop if context is missing\n\tif ( ! $post_id && in_the_loop() ) {\n\t\t$post_id = get_the_ID();\n\t}\n\n\tif ( ! $post_id || $post_id &lt;= 0 ) {\n\t\terror_log( 'BB DEBUG: Could not determine post ID for weather binding' );\n\t\treturn null;\n\t}\n\n\t$weather_data = bb_fetch_and_cache_weather_data( $post_id );\n\n\tif ( ! is_array( $weather_data ) || ! isset( $weather_data[ $key ] ) ) {\n\t\treturn null;\n\t}\n\n\t$value = $weather_data[ $key ];\n\n\t\/\/ Append \u00b0C symbol for temperature\n\tif ( $key === 'temperature' ) {\n\t\treturn $value . '\u00b0C';\n\t}\n\n\treturn $value;\n}<\/code><\/pre>\n<p>Analizziamo questa funzione:<\/p>\n<ul>\n<li><code>$source_args['key']<\/code> identifica i dati legati all&#8217;attributo del blocco.<\/li>\n<li>La riga successiva recupera l&#8217;ID del post corrente da <code>context<\/code>. Se <code>context<\/code> manca, come nel caso delle anteprime, l&#8217;ID del post corrente viene recuperato con <code>get_the_ID()<\/code>.<\/li>\n<li>Poi chiama la funzione <code>bb_fetch_and_cache_weather_data<\/code>, che recupera i dati dall&#8217;API. Definiremo questa funzione nel prossimo passo.<\/li>\n<li><code>$weather_data[$key]<\/code> contiene i dati forniti dall&#8217;API, come la temperatura e lo stato meteorologico.<\/li>\n<li>Se la chiave \u00e8 <code>temperature<\/code>, aggiunge <code>\u00b0C<\/code> al valore fornito.<\/li>\n<li>La funzione restituisce quindi il valore finale.<\/li>\n<\/ul>\n<h3>Passo 4: recuperare i dati da una fonte esterna<\/h3>\n<p>Come gi\u00e0 detto, recuperiamo i dati dal <a href=\"https:\/\/open-meteo.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">servizio Open-Meteo<\/a> (gratuito per uso non commerciale).<\/p>\n<p>Per recuperare la temperatura e le condizioni meteo attuali, devi inviare una richiesta all&#8217;API che includa la latitudine e la longitudine di una determinata localit\u00e0 e la query var <code>current=weather_code,temperature_2m<\/code>. Di seguito \u00e8 riportato un esempio di richiesta:<\/p>\n<pre><code>https:\/\/api.open-meteo.com\/v1\/forecast?latitude=-33.8717&longitude=151.2299&current=weather_code,temperature_2m<\/code><\/pre>\n<p>L&#8217;API fornisce una risposta simile alla seguente:<\/p>\n<pre><code class=\"language-json\">{\n\t\"latitude\": -33.8717,\n\t\"longitude\": 151.2299,\n\t\"generationtime_ms\": 0.030875205993652344,\n\t\"utc_offset_seconds\": 0,\n\t\"timezone\": \"GMT\",\n\t\"timezone_abbreviation\": \"GMT\",\n\t\"elevation\": 13.0,\n\t\"current_units\": {\n\t\t\"time\": \"iso8601\",\n\t\t\"interval\": \"seconds\",\n\t\t\"weather_code\": \"wmo code\",\n\t\t\"temperature_2m\":\"\u00b0C\"\n\t},\n\t\"current\": {\n\t\t\"time\": \"2025-12-01T16:00\",\n\t\t\"interval\": 900,\n\t\t\"weather_code\": 3,\n\t\t\"temperature_2m\":7.3\n\t}\n}<\/code><\/pre>\n<figure id=\"attachment_202460\" aria-describedby=\"caption-attachment-202460\" style=\"width: 2336px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202460\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/postman-for-vsc.png\" alt=\"Risposta Open-Meteo in Postman per Visual Studio Code\" width=\"2336\" height=\"1642\"><figcaption id=\"caption-attachment-202460\" class=\"wp-caption-text\">Risposta di Open-Meteo in Postman per Visual Studio Code<\/figcaption><\/figure>\n<p>Ora che sai come ottenere i dati di cui hai bisogno, apri il file <code>weather-api.php<\/code> e aggiungi il seguente codice:<\/p>\n<pre><code class=\"language-php\">function bb_fetch_and_cache_weather_data( $post_id ) {\n\t$lat = get_post_meta( $post_id, 'block_bindings_city_lat', true );\n\t$lng = get_post_meta( $post_id, 'block_bindings_city_lng', true );\n\n\t$lat = str_replace( ',', '.', trim( $lat ) );\n\t$lng = str_replace( ',', '.', trim( $lng ) );\n\n\tif ( ! is_numeric( $lat ) || ! is_numeric( $lng ) ) {\n\t\terror_log( 'BB DEBUG: Invalid latitude\/longitude values after normalization' );\n\t\treturn false;\n\t}\n\n\t$transient_key = 'bb_weather_data_' . $post_id;\n\t$cached_data   = get_transient( $transient_key );\n\n\tif ( $cached_data !== false ) {\n\t\terror_log( \"BB DEBUG: Cache hit for post ID {$post_id}\" );\n\t\treturn $cached_data;\n\t}\n\n\t\/\/ Build Open-Meteo API URL\n\t$api_url = sprintf(\n\t\t'https:\/\/api.open-meteo.com\/v1\/forecast?latitude=%s&longitude=%s&current=weather_code,temperature_2m',\n\t\trawurlencode( $lat ),\n\t\trawurlencode( $lng )\n\t);\n\n\terror_log( \"BB DEBUG: Fetching weather data from: {$api_url}\" );\n\n\t$response = wp_remote_get( $api_url, [ 'timeout' =&gt; 10 ] );\n\n\tif ( is_wp_error( $response ) ) {\n\t\terror_log( 'BB DEBUG: API request failed \u2013 ' . $response-&gt;get_error_message() );\n\t\treturn false;\n\t}\n\n\tif ( wp_remote_retrieve_response_code( $response ) !== 200 ) {\n\t\terror_log( 'BB DEBUG: API returned non-200 status code' );\n\t\treturn false;\n\t}\n\n\t$body = wp_remote_retrieve_body( $response );\n\t$data = json_decode( $body, true );\n\n\tif ( ! $data || ! isset( $data['current'] ) ) {\n\t\terror_log( 'BB DEBUG: Invalid or empty API response' );\n\t\treturn false;\n\t}\n\n\t$temperature  = $data['current']['temperature_2m'] ?? null;\n\t$weather_code = $data['current']['weather_code'] ?? 0;\n\n\t$mapped_data = [\n\t\t'temperature'    =&gt; round( (float) $temperature ),\n\t\t'weather_state'  =&gt; bb_map_wmo_code_to_state( (int) $weather_code ),\n\t];\n\n\t\/\/ Cache for 30 minutes\n\tset_transient( $transient_key, $mapped_data, BB_WEATHER_CACHE_TIME );\n\n\terror_log( 'BB DEBUG: Weather data fetched and cached successfully' );\n\n\treturn $mapped_data;\n}<\/code><\/pre>\n<p>Questa funzione recupera i dati meteo attuali dall&#8217;API Open-Meteo e li memorizza nella cache utilizzando i <a href=\"https:\/\/kinsta.com\/it\/blog\/tabella-wp_options-e-dati-automatici\/#clean-up-transients\">transient<\/a>. Diamo un&#8217;occhiata pi\u00f9 da vicino.<\/p>\n<ul>\n<li>Due chiamate a <code>get_post_meta<\/code> recuperano la latitudine e la longitudine della tua posizione.<\/li>\n<li>Le due righe successive normalizzano il separatore decimale nel caso in cui l&#8217;utente inserisca una virgola al posto del punto.<\/li>\n<li>Il blocco condizionale controlla se i valori sono in formato numerico utilizzando <code>is_numeric()<\/code>.<\/li>\n<li>Successivamente, controlla se i dati sono presenti nella cache. In caso affermativo, restituisce i dati in cache e interrompe la funzione senza inviare alcuna richiesta all&#8217;API.<\/li>\n<li>Se non ci sono dati nella cache, crea la richiesta e memorizza la risposta.<\/li>\n<li>Le righe seguenti forniscono <code>temperature<\/code> e <code>weather_code<\/code>.<\/li>\n<li><code>weather_code<\/code> \u00e8 mappata su <code>weather_state<\/code> grazie alla funzione <code>bb_map_wmo_code_to_state<\/code>, definita di seguito.<\/li>\n<li>I dati vengono salvati con <code>set_transient<\/code>.<\/li>\n<li>Infine, la funzione restituisce i dati mappati.<\/li>\n<\/ul>\n<p>Infine, definiamo la funzione che traduce <code>weather_code<\/code> in una stringa leggibile:<\/p>\n<pre><code class=\"language-php\">function bb_map_wmo_code_to_state( $code ) {\n\tif ( $code &gt;= 0 && $code &lt;= 3 ) {\n\t\treturn 'clear';\n\t} elseif ( $code &gt;= 51 && $code &lt;= 67 ) {\n\t\treturn 'rainy';\n\t} elseif ( $code &gt;= 71 && $code &lt;= 77 ) {\n\t\treturn 'snowy';\n\t} elseif ( $code &gt;= 95 ) {\n\t\treturn 'thunderstorm';\n\t}\n\treturn 'cloudy';\n}<\/code><\/pre>\n<p>Il codice \u00e8 completo e il tuo plugin \u00e8 pronto per essere testato.<\/p>\n<h2>Come utilizzare l&#8217;API Block Bindings<\/h2>\n<p>\u00c8 arrivato il momento di imparare a utilizzare le nuove funzionalit\u00e0 aggiunte al tuo sito con l&#8217;API Block Bindings!<\/p>\n<p>Nella dashboard di WordPress, vai alla schermata dei plugin e attiva il plugin <strong>Block Bindings Example<\/strong> che hai appena creato.<\/p>\n<figure id=\"attachment_202462\" aria-describedby=\"caption-attachment-202462\" style=\"width: 2300px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202462\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/plugins-screen.png\" alt=\"Schermata dei plugin\" width=\"2300\" height=\"1246\"><figcaption id=\"caption-attachment-202462\" class=\"wp-caption-text\">Attivare il plugin nella dashboard di WordPress.<\/figcaption><\/figure>\n<p>Successivamente, crea un nuovo post o una nuova pagina. Aggiungi un blocco immagine, un titolo e quattro blocchi riga contenenti due paragrafi ciascuno, come mostrato nell&#8217;immagine sottostante. Poi, salva il post.<\/p>\n<figure id=\"attachment_202463\" aria-describedby=\"caption-attachment-202463\" style=\"width: 1432px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202463\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/adding-blocks.png\" alt=\"Uno screenshot della tela dell'editor a blocchi con i blocchi.\" width=\"1432\" height=\"1084\"><figcaption id=\"caption-attachment-202463\" class=\"wp-caption-text\">Aggiungere blocchi all&#8217;area di lavoro dell&#8217;editor.<\/figcaption><\/figure>\n<p>In seguito, aggiungi i tuoi campi personalizzati e salva nuovamente il post.<\/p>\n<figure id=\"attachment_202464\" aria-describedby=\"caption-attachment-202464\" style=\"width: 1728px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202464\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/add-custom-fields.png\" alt=\"Aggiungere i campi personalizzati al post.\" width=\"1728\" height=\"850\"><figcaption id=\"caption-attachment-202464\" class=\"wp-caption-text\">Aggiungere i campi personalizzati al post.<\/figcaption><\/figure>\n<p>Seleziona il blocco Immagine e trova il pannello <strong>Attributi<\/strong> nella barra laterale delle Impostazioni del blocco. Clicca sul pulsante <strong>+<\/strong> per aprire il menu a tendina che mostra l&#8217;elenco degli attributi del blocco Immagine che supportano il Block Bindings. Seleziona la voce <strong>url<\/strong>.<\/p>\n<figure id=\"attachment_202443\" aria-describedby=\"caption-attachment-202443\" style=\"width: 2094px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202443\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/image-block-attributes-block-bindings-ui.png\" alt=\"Uno screenshot che mostra gli attributi del blocco Immagine che supportano i Block Bindings\" width=\"2094\" height=\"1016\"><figcaption id=\"caption-attachment-202443\" class=\"wp-caption-text\">Attributi del blocco immagine che supportano i Block Bindings<\/figcaption><\/figure>\n<p>Dopo aver selezionato l&#8217;attributo di blocco, nella scheda <strong>Avanzate<\/strong> verr\u00e0 visualizzato un nuovo elemento <strong>URL<\/strong> con la descrizione &#8220;Non connesso&#8221;. Clicca nuovamente sull&#8217;elemento <strong>url<\/strong> per visualizzare l&#8217;elenco delle fonti di binding disponibili. <strong>Post Meta<\/strong> fornisce i quattro campi personalizzati registrati per il tipo di post, insieme ai rispettivi valori. Seleziona <strong>City Image URL<\/strong>.<\/p>\n<figure id=\"attachment_202467\" aria-describedby=\"caption-attachment-202467\" style=\"width: 2300px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202467\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/registered-post-meta-fields.png\" alt=\"Uno screenshot della UI di Block Bindings\" width=\"2300\" height=\"902\"><figcaption id=\"caption-attachment-202467\" class=\"wp-caption-text\">Associare i meta-campi registrati.<\/figcaption><\/figure>\n<p>Hai assegnato il meta-campo <strong>City Image URL<\/strong> all&#8217;attributo <strong>url<\/strong> del blocco Immagine. Ora dovresti vedere una foto della citt\u00e0 che hai scelto.<\/p>\n<p>Segui la stessa procedura per gli altri meta-campi. Assegna il campo <strong>City Name<\/strong> all&#8217;attributo <code>content<\/code> del blocco Intestazione e i campi <strong>Latitude<\/strong> e <strong>Longitude<\/strong> ai blocchi Paragrafo corrispondenti.<\/p>\n<p>Ora collega gli ultimi due blocchi alla tua fonte di associazione personalizzata. Purtroppo, come hai visto nelle schermate precedenti, questa opzione non \u00e8 disponibile nell&#8217;interfaccia dell&#8217;editor.<\/p>\n<p>Al momento, devi passare all&#8217;editor di codice e scrivere manualmente il markup per i due blocchi collegati alla fonte di associazione. Di seguito trovi il codice per visualizzare la temperatura fornita dal servizio Open-Meteo:<\/p>\n<pre><code class=\"language-json\">&lt;!-- wp:paragraph {\n\t\"metadata\":{\n\t\t\"bindings\":{\n\t\t\t\"content\":{\n\t\t\t\t\"source\":\"bb\/weather-condition\",\n\t\t\t\t\"args\":{\n\t\t\t\t\t\"key\":\"temperature\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} --&gt;\n&lt;p&gt;Placeholder&lt;\/p&gt;\n&lt;!-- \/wp:paragraph --&gt;<\/code><\/pre>\n<p>Con questo metodo, il nome della tua fonte di associazione apparir\u00e0 nell&#8217;editor come <strong>Weather Condition<\/strong>, ma i dati reali saranno visibili solo nel front-end.<\/p>\n<figure id=\"attachment_202470\" aria-describedby=\"caption-attachment-202470\" style=\"width: 2292px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202470\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/block-bindings-example.jpg\" alt=\"Un esempio di block binding con fonti di dati personalizzate\" width=\"2292\" height=\"1358\"><figcaption id=\"caption-attachment-202470\" class=\"wp-caption-text\">Un esempio di block binding con fonti di dati personalizzate<\/figcaption><\/figure>\n<p>Chiaramente, aggiungere manualmente un oggetto JSON al markup del blocco non \u00e8 un processo facile da usare. Fortunatamente, <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-6-9\/\">WordPress 6.9<\/a> ha introdotto miglioramenti significativi all&#8217;API Block Bindings, rendendo possibile la creazione di un&#8217;interfaccia utente per le fonti di dati personalizzate. Proviamo a migliorare il nostro plugin con un&#8217;interfaccia utente personalizzata.<\/p>\n<h2>Come creare un&#8217;interfaccia utente per le tue fonti Block Bindings personalizzate<\/h2>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Abbiamo lasciato per ultima questa parte del progetto perch\u00e9 le funzionalit\u00e0 necessarie sono disponibili solo in WordPress 6.9 e versioni successive. Il codice seguente non funzioner\u00e0 se utilizzi una versione precedente di WordPress.<\/p>\n<\/aside>\n\n<p>Per creare un&#8217;interfaccia utente personalizzata per la tua fonte di associazione, devi scrivere del codice JavaScript. Per prima cosa, crea una sottocartella <code>js<\/code> sotto <code>\/includes<\/code> e poi crea un file <strong>block-bindings-ui.js<\/strong> al suo interno. La struttura del plugin \u00e8 ora la seguente:<\/p>\n<pre><code>\/wp-content\/plugins\/\n\u2514\u2500\u2500 \/block-bindings-example\/\n\t\u251c\u2500\u2500 block-bindings-example.php\n\t\u2514\u2500\u2500 \/includes\/\n\t\t\u251c\u2500\u2500 binding-sources.php\n\t\t\u251c\u2500\u2500 meta-fields.php\n\t\t\u2514\u2500\u2500 weather-api.php\n\t\t\t\u2514\u2500\u2500 \/js\/\n\t\t\t\t\u2514\u2500\u2500\tblock-bindings-ui.js<\/code><\/pre>\n<p>Come primo passo, aggiungi lo script JS al file principale del tuo plugin:<\/p>\n<pre><code class=\"language-php\">function bb_enqueue_weather_bindings_ui() {\n\n\tif ( ! function_exists( 'register_block_bindings_source' ) ) {\n\t\treturn;\n\t}\n\n\t$js_file_path = plugin_dir_path( __FILE__ ) . 'includes\/js\/block-bindings-ui.js';\n\n\tif ( ! file_exists( $js_file_path ) ) {\n\t\treturn;\n\t}\n\n\t\/\/ Enqueue the script only in the editor\n\twp_enqueue_script(\n\t\t'bb-weather-bindings-ui',\n\t\tplugin_dir_url( __FILE__ ) . 'includes\/js\/block-bindings-ui.js',\n\t\t[ 'wp-blocks', 'wp-element', 'wp-dom-ready', 'wp-block-bindings' ],\n\t\tfilemtime( $js_file_path ),\n\t\ttrue\n\t);\n}\nadd_action( 'enqueue_block_editor_assets', 'bb_enqueue_weather_bindings_ui' );<\/code><\/pre>\n<p>Ecco cosa fa questa funzione:<\/p>\n<ul>\n<li>Innanzitutto, controlla che la funzione <code>register_block_bindings_source()<\/code> esista.<\/li>\n<li>Poi controlla che il file <code>block-bindings-ui.js<\/code> sia presente nella cartella <code>\/includes\/js<\/code> del plugin.<\/li>\n<li>La funzione <code>wp_enqueue_script()<\/code> mette in attesa lo script da utilizzare nell&#8217;editor. Per una descrizione dettagliata della funzione, consulta la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/\" target=\"_blank\" rel=\"noopener noreferrer\">documentazione<\/a>.<\/li>\n<li>Utilizza l&#8217;<a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/enqueue_block_editor_assets\/\" target=\"_blank\" rel=\"noopener noreferrer\">hook <code>enqueue_block_editor_assets<\/code><\/a> per accodare gli script all&#8217;interfaccia di editing.<\/li>\n<\/ul>\n<p>Ora apri il file <code>block-bindings-ui.js<\/code> e scrivi il seguente codice:<\/p>\n<pre><code class=\"language-javascript\">wp.blocks.registerBlockBindingsSource({\n\tname: 'bb\/weather-condition',\n\tlabel: 'Weather Condition',\n\tuseContext: [ 'postId', 'postType' ],\n\tgetValues: ( { bindings } ) =&gt; {\n\t\tif ( bindings.content?.args?.key === 'temperature' ) {\n\t\t\treturn {\n\t\t\t\tcontent: 'Current temperature provided by Open-Meteo.',\n\t\t\t};\n\t\t}\n\t\tif ( bindings.content?.args?.key === 'weather_state' ) {\n\t\t\treturn {\n\t\t\t\tcontent: 'Current conditions.',\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tcontent: bindings.content,\n\t\t};\n\t},\n\tgetFieldsList() {\n\t\treturn [\n\t\t\t{ label: 'Temperature (\u00b0C)',   type: 'string', args: { key: 'temperature' } },\n\t\t\t{ label: 'Weather Conditions',  type: 'string', args: { key: 'weather_state' } }\n\t\t];\n\t}\n});<\/code><\/pre>\n<ul>\n<li>La funzione <code>registerBlockBindingsSource()<\/code> registra una fonte di associazione nell&#8217;editor di blocchi.<\/li>\n<li><code>name<\/code> \u00e8 un identificatore univoco per la tua fonte di associazione. Deve corrispondere esattamente al nome utilizzato in PHP con <code>register_block_bindings_source()<\/code>.<\/li>\n<li><code>label<\/code> \u00e8 un nome leggibile visualizzato nel menu <strong>Source<\/strong> del pannello <strong>Attributes<\/strong>.<\/li>\n<li><code>useContext<\/code> imposta i valori di contesto di cui questa fonte ha bisogno dal blocco. <code>postId<\/code> \u00e8 necessario affinch\u00e9 la sorgente sappia quali dati meta\/meteo del post leggere.<\/li>\n<li><code>getValues<\/code> fornisce un&#8217;anteprima del valore delimitato all&#8217;interno dell&#8217;editor del blocco. Restituisce le opzioni che appaiono nel menu a tendina dopo che l&#8217;utente ha selezionato la fonte associata (&#8220;Weather Conditions&#8221; nel nostro esempio). Questo metodo \u00e8 disponibile da WordPress 6.9.<\/li>\n<li><code>getFieldsList<\/code> restituisce le opzioni che appaiono nel menu a tendina dopo che l&#8217;utente ha selezionato la fonte del vincolo (&#8220;Weather Conditions&#8221; nel nostro esempio).<\/li>\n<\/ul>\n<p>Salva il file e torna all&#8217;editor. La fonte <strong>Weather Conditions<\/strong> \u00e8 ora disponibile nell&#8217;interfaccia dell&#8217;editor, insieme a <strong>Post Meta<\/strong>. Ricarica la pagina e collega un blocco Paragrafo o Intestazione alla sorgente dell&#8217;associazione. L&#8217;immagine qui sotto mostra il risultato.<\/p>\n<figure id=\"attachment_202472\" aria-describedby=\"caption-attachment-202472\" style=\"width: 2112px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202472\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/custom-binding-source-ui.png\" alt=\"Fonte dell'UI personalizzata di Block Binding\" width=\"2112\" height=\"992\"><figcaption id=\"caption-attachment-202472\" class=\"wp-caption-text\">Fonte dell&#8217;UI personalizzata di Block Binding<\/figcaption><\/figure>\n<p>L&#8217;immagine finale mostra il risultato sul frontend del sito web.<\/p>\n<figure id=\"attachment_202474\" aria-describedby=\"caption-attachment-202474\" style=\"width: 1374px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202474\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/custom-data-with-block-bindings.jpg\" alt=\"Un post che mostra i dati provenienti da una fonte di binding esterna\" width=\"1374\" height=\"986\"><figcaption id=\"caption-attachment-202474\" class=\"wp-caption-text\">Un post che mostra i dati provenienti da una fonte di associazione esterna<\/figcaption><\/figure>\n<h2>Cos&#8217;altro si pu\u00f2 fare con l&#8217;API Block Bindings?<\/h2>\n<p>Questo articolo non fa che scalfire la superficie di ci\u00f2 che puoi costruire con l&#8217;API Block Bindings. Il bello \u00e8 che lo sviluppo di questa potente funzione di WordPress \u00e8 tutt&#8217;altro che concluso e possiamo aspettarci nuove implementazioni e aggiunte in futuro.<\/p>\n<p>L&#8217;integrazione dell&#8217;API Block Bindings con altre potenti API di WordPress, come l&#8217;<a href=\"https:\/\/kinsta.com\/it\/blog\/interactivity-api-wordpress\/\">API Interactivity<\/a>, permette di costruire applicazioni dinamiche e interattive che vanno ben oltre le tradizionali funzioni di blogging che hanno reso popolare WordPress nei suoi primi anni di vita.<\/p>\n<p>WordPress non \u00e8 pi\u00f9 solo una piattaforma di blogging o un costruttore di siti web. \u00c8 ormai destinato a diventare una piattaforma di sviluppo multifunzionale per tutti i tipi di applicazioni web.<\/p>\n<p>Pi\u00f9 potenti sono le tue applicazioni, pi\u00f9 importante diventa il tuo servizio di hosting. Kinsta offre un hosting gestito Premium con prestazioni elevate, una solida sicurezza, un&#8217;ampia automazione e un&#8217;assistenza di prim&#8217;ordine, riconosciuta come leader del settore dagli <a href=\"https:\/\/kinsta.com\/it\/blog\/g2-awards\/\">utenti di G2<\/a>.<\/p>\n<p>Le applicazioni web pi\u00f9 potenti richiedono la migliore infrastruttura di hosting. Dai un&#8217;occhiata ai <a href=\"https:\/\/kinsta.com\/it\/prezzi\/\">piani di Kinsta per<\/a> trovare quello pi\u00f9 adatto alle esigenze del tuo sito.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;API Block Bindings \u00e8 un potente strumento dell&#8217;editor a blocchi che permette di associare qualsiasi fonte di dati agli attributi di un blocco. Questa API \u00e8 &#8230;<\/p>\n","protected":false},"author":36,"featured_media":82887,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[25873],"class_list":["post-82886","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-sviluppo-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>L&#039;API WordPress Block Bindings: cos&#039;\u00e8 e come usarla<\/title>\n<meta name=\"description\" content=\"Tutto sull&#039;API Block Bindings di WordPress, un&#039;API WordPress che consente agli sviluppatori di integrare qualsiasi fonte di dati nei siti web.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"L&#039;API WordPress Block Bindings: cos&#039;\u00e8 e come usarla per costruire siti web dinamici\" \/>\n<meta property=\"og:description\" content=\"Tutto sull&#039;API Block Bindings di WordPress, un&#039;API WordPress che consente agli sviluppatori di integrare qualsiasi fonte di dati nei siti web.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-09T08:48:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-12T12:42:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Carlo Daniele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Tutto sull&#039;API Block Bindings di WordPress, un&#039;API WordPress che consente agli sviluppatori di integrare qualsiasi fonte di dati nei siti web.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\" \/>\n<meta name=\"twitter:creator\" content=\"@carlodaniele\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"L&#8217;API WordPress Block Bindings: cos&#8217;\u00e8 e come usarla per costruire siti web dinamici\",\"datePublished\":\"2026-01-09T08:48:52+00:00\",\"dateModified\":\"2026-01-12T12:42:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/\"},\"wordCount\":2618,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\",\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/\",\"name\":\"L'API WordPress Block Bindings: cos'\u00e8 e come usarla\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\",\"datePublished\":\"2026-01-09T08:48:52+00:00\",\"dateModified\":\"2026-01-12T12:42:29+00:00\",\"description\":\"Tutto sull'API Block Bindings di WordPress, un'API WordPress che consente agli sviluppatori di integrare qualsiasi fonte di dati nei siti web.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sviluppo di WordPress\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/sviluppo-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"L&#8217;API WordPress Block Bindings: cos&#8217;\u00e8 e come usarla per costruire siti web dinamici\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"caption\":\"Carlo Daniele\"},\"description\":\"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.\",\"sameAs\":[\"https:\/\/frammentidicodice.com\/\",\"https:\/\/x.com\/carlodaniele\"],\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"L'API WordPress Block Bindings: cos'\u00e8 e come usarla","description":"Tutto sull'API Block Bindings di WordPress, un'API WordPress che consente agli sviluppatori di integrare qualsiasi fonte di dati nei siti web.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/","og_locale":"it_IT","og_type":"article","og_title":"L'API WordPress Block Bindings: cos'\u00e8 e come usarla per costruire siti web dinamici","og_description":"Tutto sull'API Block Bindings di WordPress, un'API WordPress che consente agli sviluppatori di integrare qualsiasi fonte di dati nei siti web.","og_url":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2026-01-09T08:48:52+00:00","article_modified_time":"2026-01-12T12:42:29+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","type":"image\/png"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"Tutto sull'API Block Bindings di WordPress, un'API WordPress che consente agli sviluppatori di integrare qualsiasi fonte di dati nei siti web.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","twitter_creator":"@carlodaniele","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Carlo Daniele","Tempo di lettura stimato":"17 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"L&#8217;API WordPress Block Bindings: cos&#8217;\u00e8 e come usarla per costruire siti web dinamici","datePublished":"2026-01-09T08:48:52+00:00","dateModified":"2026-01-12T12:42:29+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/"},"wordCount":2618,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/","url":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/","name":"L'API WordPress Block Bindings: cos'\u00e8 e come usarla","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","datePublished":"2026-01-09T08:48:52+00:00","dateModified":"2026-01-12T12:42:29+00:00","description":"Tutto sull'API Block Bindings di WordPress, un'API WordPress che consente agli sviluppatori di integrare qualsiasi fonte di dati nei siti web.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/api-block-bindings-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Sviluppo di WordPress","item":"https:\/\/kinsta.com\/it\/argomenti\/sviluppo-wordpress\/"},{"@type":"ListItem","position":3,"name":"L&#8217;API WordPress Block Bindings: cos&#8217;\u00e8 e come usarla per costruire siti web dinamici"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","caption":"Carlo Daniele"},"description":"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.","sameAs":["https:\/\/frammentidicodice.com\/","https:\/\/x.com\/carlodaniele"],"url":"https:\/\/kinsta.com\/it\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/82886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=82886"}],"version-history":[{"count":5,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/82886\/revisions"}],"predecessor-version":[{"id":82907,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/82886\/revisions\/82907"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82886\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82886\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82886\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82886\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82886\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82886\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82886\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82886\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82886\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/82887"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=82886"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=82886"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=82886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}