{"id":74079,"date":"2026-01-09T05:57:25","date_gmt":"2026-01-09T08:57:25","guid":{"rendered":"https:\/\/kinsta.com\/pt\/?p=74079&#038;preview=true&#038;preview_id=74079"},"modified":"2026-01-15T08:13:45","modified_gmt":"2026-01-15T11:13:45","slug":"api-vinculacao-blocos-wordpress","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/","title":{"rendered":"A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos"},"content":{"rendered":"<p>A API de vincula\u00e7\u00e3o de blocos \u00e9 uma ferramenta poderosa do editor de blocos que permite conectar qualquer fonte de dados aos atributos de um bloco.<\/p>\n<p>Essa API foi introduzida pela primeira vez <span style=\"margin: 0px;padding: 0px\">no <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-6-5\/#block-bindings-api\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress 6.5<\/a> e, em sua<\/span> implementa\u00e7\u00e3o <span style=\"margin: 0px;padding: 0px\">inicial<\/span>, permitiu que os usu\u00e1rios do WordPress exibissem valores de campos personalizados em artigos e p\u00e1ginas.<\/p>\n<p>A API de vincula\u00e7\u00e3o de blocos serve como base para outros recursos robustos do WordPress. Entre os exemplos est\u00e3o as <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-6-6\/#synced-pattern-overrides\">substitui\u00e7\u00f5es de padr\u00f5es sincronizados<\/a> e a varia\u00e7\u00e3o do bloco <strong>Data do artigo<\/strong>\u00a0introduzida no <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-6-9\/#block-bindings-api-improvements\">WordPress 6.9<\/a>.<\/p>\n<p>Ent\u00e3o, afinal, o que \u00e9 a API de vincula\u00e7\u00e3o de blocos? E para que ela \u00e9 usada? A seguir, apresentamos uma introdu\u00e7\u00e3o simples e um exemplo do mundo real mostrando como criar v\u00ednculos entre blocos do Gutenberg e fontes de dados externas.<\/p>\n<p>Vamos come\u00e7ar.<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>A API de vincula\u00e7\u00e3o de blocos: conceitos b\u00e1sicos<\/h2>\n<p>Como mencionado acima, a API de vincula\u00e7\u00e3o de blocos permite criar v\u00ednculos entre uma fonte de dados e os atributos de um bloco.<\/p>\n<p>Se voc\u00ea n\u00e3o estiver familiarizado com atributos de blocos, navegue at\u00e9 o diret\u00f3rio <code>src<\/code> da biblioteca de blocos do projeto Gutenberg no GitHub, localize o bloco Par\u00e1grafo e abra o <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/blob\/trunk\/packages\/block-library\/src\/paragraph\/block.json\">arquivo <code>block.json<\/code><\/a>. A propriedade <code>attributes<\/code> fornece uma lista dos atributos do bloco Par\u00e1grafo.<\/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>Os blocos a seguir s\u00e3o compat\u00edveis com a API de vincula\u00e7\u00e3o de blocos a partir do WordPress 6.9 e, portanto, podem ser vinculados aos seus campos personalizados:<\/p>\n<table>\n<thead>\n<tr>\n<th>Blocos compat\u00edveis<\/th>\n<th>Atributos<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Par\u00e1grafo<\/td>\n<td>conte\u00fado<\/td>\n<\/tr>\n<tr>\n<td>T\u00edtulo<\/td>\n<td>conte\u00fado<\/td>\n<\/tr>\n<tr>\n<td>Imagem<\/td>\n<td>id, url, alt, t\u00edtulo, legenda<\/td>\n<\/tr>\n<tr>\n<td>Bot\u00e3o<\/td>\n<td>texto, url, linkTarget, rel<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Para conectar seus campos personalizados aos blocos do Gutenberg, voc\u00ea deve primeiro <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/\" target=\"_blank\" rel=\"noopener noreferrer\">registr\u00e1-los<\/a>. O c\u00f3digo a seguir registra um campo personalizado por meio de um plugin do WordPress ou do <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-functions-php\/\">arquivo <code>functions.php<\/code><\/a> do seu 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> aceita um array de atributos que definem as caracter\u00edsticas dos campos personalizados, e a documenta\u00e7\u00e3o fornece uma <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_meta\/\">lista completa<\/a> deles. Para tornar um campo personalizado dispon\u00edvel para a API de vincula\u00e7\u00e3o de blocos, \u00e9 necess\u00e1rio definir <code>show_in_rest<\/code> como <code>true<\/code>. A partir do WordPress 6.9, <code>string<\/code> \u00e9 o \u00fanico tipo compat\u00edvel.<\/p>\n<p>Para ver a API de vincula\u00e7\u00e3o de blocos em a\u00e7\u00e3o com campos personalizados, crie um novo plugin do WordPress e registre um campo meta com o c\u00f3digo mostrado acima.<\/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>No painel do WordPress, ative o plugin. Em seguida, navegue at\u00e9 a tela Artigos e crie um novo artigo. Ao selecionar um bloco compat\u00edvel, o painel <strong>Atributos<\/strong> na barra lateral de Configura\u00e7\u00f5es do bloco exibir\u00e1 a lista de atributos que podem ser vinculados a um campo personalizado registrado.<\/p>\n<figure id=\"attachment_202443\" aria-describedby=\"caption-attachment-202443\" style=\"width: 2094px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-202443 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/image-block-attributes-block-bindings-ui.png\" alt=\"Atributos do bloco de Imagem compat\u00edveis com a vincula\u00e7\u00e3o de blocos.\" width=\"2094\" height=\"1016\"><figcaption id=\"caption-attachment-202443\" class=\"wp-caption-text\">Atributos do bloco de Imagem compat\u00edveis com a vincula\u00e7\u00e3o de blocos.<\/figcaption><\/figure>\n<p>Abra o menu <strong>Op\u00e7\u00f5es<\/strong> no canto superior direito e selecione <strong>Prefer\u00eancias<\/strong>. Na aba <strong>Geral<\/strong>, localize a se\u00e7\u00e3o <strong>Avan\u00e7ado<\/strong> e ative campos personalizados. Salve as altera\u00e7\u00f5es, aguarde at\u00e9 que a p\u00e1gina recarregue e retorne ao 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=\"wp-image-202434 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/enable-custom-fields.png\" alt=\"Prefer\u00eancias do editor de blocos.\" width=\"1490\" height=\"1006\"><figcaption id=\"caption-attachment-202434\" class=\"wp-caption-text\">Habilitar campos personalizados em Prefer\u00eancias do editor.<\/figcaption><\/figure>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Assumimos que queremos adicionar campos personalizados manualmente. Criar uma <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-6-7\/#meta-boxes-in-the-post-editor\">interface que simplifique<\/a> a inser\u00e7\u00e3o de campos personalizados est\u00e1 fora do escopo deste artigo.<\/p>\n<\/aside>\n\n<p>O pr\u00f3ximo passo \u00e9 inserir um bloco Imagem. Com o bloco selecionado, clique no \u00edcone + no painel <b>Atributos <\/b>e selecione o atributo <strong>url<\/strong>. O painel Atributos exibir\u00e1 ent\u00e3o uma lista de campos meta dispon\u00edveis. Selecione url novamente. Agora, voc\u00ea ver\u00e1 a lista de campos meta dispon\u00edveis para o tipo de conte\u00fado atual.<\/p>\n<figure id=\"attachment_202436\" aria-describedby=\"caption-attachment-202436\" style=\"width: 2162px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-202436 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/attributes-panel-image-block.png\" alt=\"Imagem: campo personalizado e interface da vincula\u00e7\u00e3o de blocos.\" width=\"2162\" height=\"930\"><figcaption id=\"caption-attachment-202436\" class=\"wp-caption-text\">Vinculando um campo personalizado ao atributo url de um bloco Imagem na interface de vincula\u00e7\u00e3o de blocos.<\/figcaption><\/figure>\n<p>Selecione seu campo meta e salve o artigo. Agora voc\u00ea dever\u00e1 ver a imagem tanto no editor quanto no 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=\"wp-image-202439 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/block-bindings-image-url.jpg\" alt=\"Imagem: editor de blocos com um bloco Imagem cujo atributo url est\u00e1 vinculado a um campo personalizado.\" width=\"2162\" height=\"1074\"><figcaption id=\"caption-attachment-202439\" class=\"wp-caption-text\">Bloco Imagem com o atributo url vinculado ao valor de um campo personalizado.<\/figcaption><\/figure>\n<p>A partir da <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-6-7\/\">vers\u00e3o 6.7 do WordPress<\/a>, \u00e9 poss\u00edvel usar o atributo <code>Label<\/code> para exibir texto na interface do editor. O bloco de c\u00f3digo a seguir mostra um exemplo:<\/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=\"wp-image-202441 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/custom-field-label-in-block-bindings-ui.png\" alt=\"Imagem: r\u00f3tulos de campos personalizados na interface da API de vincula\u00e7\u00e3o de blocos.\" width=\"2148\" height=\"1134\"><figcaption id=\"caption-attachment-202441\" class=\"wp-caption-text\">R\u00f3tulos de campos personalizados na interface da API de vincula\u00e7\u00e3o de blocos.<\/figcaption><\/figure>\n<p>Ao abrir o editor de c\u00f3digo, \u00e9 poss\u00edvel ver um objeto JSON dentro do delimitador do bloco de imagem. A propriedade <code>metadata.bindings.url<\/code> mostra que o <code>url<\/code> do bloco de imagem est\u00e1 vinculado a um campo de metadados.<\/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>A propriedade <code>source<\/code> especifica a fonte de dados para os v\u00ednculos do bloco. A propriedade <code>args.key<\/code> estabelece uma refer\u00eancia ao seu campo de metadados.<\/p>\n<p>O aspecto mais interessante da API de vincula\u00e7\u00e3o de blocos \u00e9 sua capacidade de registrar fontes de dados personalizadas, o que abre possibilidades novas e empolgantes para desenvolvedores. A seguir, veremos como usar dados de servi\u00e7os de terceiros com a API de vincula\u00e7\u00e3o de blocos.<\/p>\n<h2>Como registrar fontes de dados personalizadas para a API de vincula\u00e7\u00e3o de blocos: um exemplo do mundo real<\/h2>\n<p>Depois que voc\u00ea estiver familiarizado com os conceitos b\u00e1sicos da API de vincula\u00e7\u00e3o de blocos, podemos avan\u00e7ar para seus aspectos mais avan\u00e7ados e interessantes para desenvolvedores.<\/p>\n<p>Como mencionado anteriormente, a API de vincula\u00e7\u00e3o de blocos permite registrar fontes de dados personalizadas. Isso possibilita recuperar dados de uma fonte remota e ou manipular dados brutos para gerar informa\u00e7\u00f5es \u00fateis que podem ser inseridas automaticamente no seu conte\u00fado.<\/p>\n<p>Nesta se\u00e7\u00e3o, voc\u00ea aprender\u00e1 como maximizar o potencial da API de vincula\u00e7\u00e3o de blocos por meio de um exemplo pr\u00e1tico que pode servir como base para o desenvolvimento de seus pr\u00f3prios aplicativos personalizados.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Observe que o c\u00f3digo fornecido no exemplo a seguir \u00e9 apenas para fins de demonstra\u00e7\u00e3o e n\u00e3o deve ser usado em produ\u00e7\u00e3o.<\/p>\n<\/aside>\n\n<p>Suponha que voc\u00ea queira recuperar dados de uma fonte externa e exibi-los em seus artigos, p\u00e1ginas ou <a href=\"https:\/\/kinsta.com\/pt\/blog\/tipos-publicacoes-personalizadas-wordpress\/\">tipos de conte\u00fado personalizados<\/a>. Por exemplo, voc\u00ea pode consultar a API de um servi\u00e7o de previs\u00e3o do tempo enviando uma solicita\u00e7\u00e3o com a latitude e longitude de uma cidade para obter dados meteorol\u00f3gicos em tempo real, que ent\u00e3o podem ser exibidos no seu site.<\/p>\n<p>Gra\u00e7as \u00e0 API de vincula\u00e7\u00e3o de blocos, voc\u00ea pode exibir a temperatura atual ou fornecer aos leitores a previs\u00e3o do tempo para os pr\u00f3ximos dias. Tamb\u00e9m \u00e9 poss\u00edvel alterar programaticamente o atributo <code>url<\/code> de uma ou mais imagens na p\u00e1gina, dependendo das condi\u00e7\u00f5es clim\u00e1ticas.<\/p>\n<p>Para adicionar esse recurso ao seu site WordPress, \u00e9 necess\u00e1rio criar um plugin. Siga estas etapas:<\/p>\n<h3>Etapa 1: criar um plugin b\u00e1sico<\/h3>\n<p>A primeira etapa \u00e9 criar os arquivos do plugin. Navegue at\u00e9 o diret\u00f3rio <code>wp-content\/plugins<\/code> de sua instala\u00e7\u00e3o do WordPress e crie uma nova pasta chamada <code>block-bindings-example<\/code>. Dentro dessa pasta, adicione os seguintes arquivos:<\/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>Abra o arquivo <code>block-bindings-example.php<\/code> em seu <a href=\"https:\/\/kinsta.com\/pt\/blog\/editores-html-gratuitos\/\">editor de c\u00f3digo<\/a> favorito e adicione o seguinte c\u00f3digo:<\/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>Veja o que esse c\u00f3digo faz:<\/p>\n<ul>\n<li>A constante <code>BB_WEATHER_CACHE_TIME<\/code> determina por quanto tempo os dados meteorol\u00f3gicos s\u00e3o armazenados em cache. Isso reduz as chamadas \u00e0 API, melhora o desempenho da p\u00e1gina e reduz os custos do servi\u00e7o.<\/li>\n<li>As express\u00f5es <code>require_once<\/code> incluem os scripts necess\u00e1rios para registrar campos meta, registrar a fonte de vincula\u00e7\u00e3o e recuperar dados da API.<\/li>\n<li>A fun\u00e7\u00e3o setup chama duas fun\u00e7\u00f5es que registram respectivamente os campos meta do post e as fontes de vincula\u00e7\u00e3o personalizadas.<\/li>\n<\/ul>\n<h3>Etapa 2: registrar campos meta do post<\/h3>\n<p>O pr\u00f3ximo passo \u00e9 registrar os campos meta necess\u00e1rios para o seu caso de uso. Abra o arquivo <code>meta-fields.php<\/code> na pasta <code>includes<\/code> e adicione o seguinte c\u00f3digo:<\/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>A fun\u00e7\u00e3o <code>register_post_meta<\/code> registra uma chave meta para uso em artigos. Observe que, para usar campos meta registrados dessa forma com a API de vincula\u00e7\u00e3o de blocos, \u00e9 necess\u00e1rio definir <code>show_in_rest<\/code> como <code>true<\/code> e <code>type<\/code> como <code>string<\/code>. Consulte a <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/\">documenta\u00e7\u00e3o<\/a> para mais informa\u00e7\u00f5es.<\/p>\n<h3>Etapa 3: Registrar a fonte da da API de vincula\u00e7\u00e3o de blocos<\/h3>\n<p>Chegou a hora de registrar sua fonte de vincula\u00e7\u00e3o. Abra o arquivo <code>binding-sources.php<\/code> e adicione o seguinte c\u00f3digo:<\/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>A fun\u00e7\u00e3o <code>register_block_bindings_source()<\/code> exige o nome da fonte e uma fun\u00e7\u00e3o de callback que recupera dados de uma fonte e retorna o valor manipulado.<\/p>\n<p>Em seguida, no mesmo arquivo <code>binding-sources.php<\/code>, defina a fun\u00e7\u00e3o de 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>Vamos detalhar essa fun\u00e7\u00e3o:<\/p>\n<ul>\n<li><code>$source_args['key']<\/code> identifica os dados vinculados ao atributo do bloco.<\/li>\n<li>A linha seguinte recupera o ID do post atual a partir do contexto. Se o contexto estiver ausente, como pode ocorrer em visualiza\u00e7\u00f5es, o ID do post atual \u00e9 obtido com <code>get_the_ID()<\/code>.<\/li>\n<li>Em seguida, a fun\u00e7\u00e3o chama <code>bb_fetch_and_cache_weather_data<\/code>, que recupera os dados da API. Essa fun\u00e7\u00e3o ser\u00e1 definida na pr\u00f3xima etapa.<\/li>\n<li><code>$weather_data[$key]<\/code> cont\u00e9m os dados fornecidos pela API, como temperatura e estado do tempo.<\/li>\n<li>Se a chave for <code>temperature<\/code>, a fun\u00e7\u00e3o adiciona <code>\u00b0C<\/code> ao valor fornecido.<\/li>\n<li>Por fim, a fun\u00e7\u00e3o retorna o valor final.<\/li>\n<\/ul>\n<h3>Etapa 4: recuperar dados de uma fonte externa<\/h3>\n<p>Conforme mencionado acima, recuperamos dados do <a href=\"https:\/\/open-meteo.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o Open-Meteo<\/a> (gratuito para uso n\u00e3o comercial).<\/p>\n<p>Para obter a temperatura atual e as condi\u00e7\u00f5es clim\u00e1ticas, \u00e9 necess\u00e1rio enviar uma solicita\u00e7\u00e3o \u00e0 API que inclua a latitude e longitude de um determinado local e a vari\u00e1vel de consulta <code>current=weather_code,temperature_2m<\/code>. Abaixo est\u00e1 um exemplo de solicita\u00e7\u00e3o:<\/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>A API fornece uma resposta semelhante \u00e0 seguinte:<\/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=\"wp-image-202460 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/postman-for-vsc.png\" alt=\"Resposta do Open-Meteo no Postman para o Visual Studio Code.\" width=\"2336\" height=\"1642\"><figcaption id=\"caption-attachment-202460\" class=\"wp-caption-text\">Resposta do Open-Meteo no Postman para o Visual Studio Code.<\/figcaption><\/figure>\n<p>Agora que voc\u00ea sabe como obter os dados de que precisa, abra o arquivo <code>weather-api.php<\/code> e adicione o seguinte c\u00f3digo:<\/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>Essa fun\u00e7\u00e3o recupera os dados meteorol\u00f3gicos atuais da API do Open-Meteo e os armazena no cache usando <a href=\"https:\/\/kinsta.com\/pt\/blog\/wp-options-dados-carregados-automaticamente\/#clean-up-transients\">transients<\/a>. Vamos analisar isso com mais detalhes.<\/p>\n<ul>\n<li>Duas chamadas a <code>get_post_meta<\/code> recuperam a latitude e a longitude da sua localiza\u00e7\u00e3o.<\/li>\n<li>As duas linhas seguintes normalizam o separador decimal caso o usu\u00e1rio informe uma v\u00edrgula em vez de um ponto.<\/li>\n<li>O bloco condicional verifica se os valores est\u00e3o em formato num\u00e9rico usando <code>is_numeric()<\/code>.<\/li>\n<li>Em seguida, verifica se os dados j\u00e1 est\u00e3o em cache. Se estiverem, retorna os dados em cache e encerra a fun\u00e7\u00e3o sem enviar nenhuma solicita\u00e7\u00e3o \u00e0 API.<\/li>\n<li>Se nenhum dado for encontrado em cache, a fun\u00e7\u00e3o constr\u00f3i a requisi\u00e7\u00e3o e armazena a resposta.<\/li>\n<li>As linhas seguintes fornecem <code>temperature<\/code> e <code>weather_code<\/code>.<\/li>\n<li>O <code>weather_code<\/code> \u00e9 mapeado para <code>weather_state<\/code> gra\u00e7as \u00e0 fun\u00e7\u00e3o <code>bb_map_wmo_code_to_state<\/code>, definida logo abaixo.<\/li>\n<li>Os dados s\u00e3o salvos com <code>set_transient<\/code>.<\/li>\n<li>Por fim, a fun\u00e7\u00e3o retorna os dados mapeados.<\/li>\n<\/ul>\n<p>Por \u00faltimo, defina a fun\u00e7\u00e3o que traduz <code>weather_code<\/code> em uma string leg\u00edvel por humanos:<\/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>O c\u00f3digo est\u00e1 completo, e seu plugin est\u00e1 pronto para testes.<\/p>\n<h2>Como usar a API de vincula\u00e7\u00e3o de blocos<\/h2>\n<p>Chegou a hora de aprender como usar os novos recursos adicionados ao seu site com a API de vincula\u00e7\u00e3o de blocos.<\/p>\n<p>No painel do WordPress, navegue at\u00e9 a tela Plugins e ative o plugin <strong>Block Bindings Example<\/strong> que voc\u00ea acabou de criar.<\/p>\n<figure id=\"attachment_202462\" aria-describedby=\"caption-attachment-202462\" style=\"width: 2300px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-202462 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/plugins-screen.png\" alt=\"Ative o plugin no painel do WordPress.\" width=\"2300\" height=\"1246\"><figcaption id=\"caption-attachment-202462\" class=\"wp-caption-text\">Ative o plugin no painel do WordPress.<\/figcaption><\/figure>\n<p>Em seguida, crie um novo artigo ou p\u00e1gina. Adicione um bloco de Imagem, um t\u00edtulo e quatro blocos de Linha, cada um contendo dois par\u00e1grafos, conforme mostrado na imagem abaixo. Depois, salve o artigo.<\/p>\n<figure id=\"attachment_202463\" aria-describedby=\"caption-attachment-202463\" style=\"width: 1432px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-202463 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/adding-blocks.png\" alt=\"Uma captura de tela da tela do editor de blocos com blocos.\" width=\"1432\" height=\"1084\"><figcaption id=\"caption-attachment-202463\" class=\"wp-caption-text\">Adicione blocos \u00e0 tela do editor.<\/figcaption><\/figure>\n<p>Na sequ\u00eancia, adicione seus campos personalizados e salve o artigo novamente.<\/p>\n<figure id=\"attachment_202464\" aria-describedby=\"caption-attachment-202464\" style=\"width: 1728px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-202464 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/add-custom-fields.png\" alt=\"Adicione campos personalizados \u00e0 postagem.\" width=\"1728\" height=\"850\"><figcaption id=\"caption-attachment-202464\" class=\"wp-caption-text\">Adicione campos personalizados ao artigo.<\/figcaption><\/figure>\n<p>Selecione o bloco de Imagem e localize o painel <strong>Atributos<\/strong> na barra lateral de Configura\u00e7\u00f5es do bloco. Clique no bot\u00e3o <strong>+<\/strong> para abrir o menu suspenso, que exibe a lista de atributos do bloco de Imagem compat\u00edveis com a API de vincula\u00e7\u00e3o de blocos. Selecione o item <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=\"wp-image-202443 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/image-block-attributes-block-bindings-ui.png\" alt=\"Uma captura de tela mostrando os atributos do bloco de Imagem compat\u00edveis com a API de vincula\u00e7\u00e3o de blocos\" width=\"2094\" height=\"1016\"><figcaption id=\"caption-attachment-202443\" class=\"wp-caption-text\">Atributos do bloco de Imagem compat\u00edveis com a\u00a0 API de vincula\u00e7\u00e3o de blocos<\/figcaption><\/figure>\n<p>Ap\u00f3s selecionar o atributo do bloco, a aba <strong>Avan\u00e7ado<\/strong> exibir\u00e1 um novo elemento de <strong>URL<\/strong> com a descri\u00e7\u00e3o \u201cN\u00e3o conectado\u201d. Clique novamente no item <strong>url<\/strong> para visualizar a lista de fontes de vincula\u00e7\u00e3o dispon\u00edveis. <strong>Post Meta<\/strong> fornece os quatro campos personalizados registrados para o tipo de conte\u00fado, juntamente com seus respectivos valores. Selecione a<strong> URL da imagem da cidade<\/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=\"wp-image-202467 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/registered-post-meta-fields.png\" alt=\"Uma captura de tela da interface de Vincula\u00e7\u00e3o de Blocos\" width=\"2300\" height=\"902\"><figcaption id=\"caption-attachment-202467\" class=\"wp-caption-text\">Conectar campos meta registrados.<\/figcaption><\/figure>\n<p>Voc\u00ea atribuiu o campo meta <strong>City Image URL<\/strong> ao atributo <strong>url<\/strong> do bloco de Imagem. Agora voc\u00ea deve ver uma foto da cidade escolhida.<\/p>\n<p>Siga o mesmo processo para os outros campos meta. Voc\u00ea atribuiu o campo <strong>City Name<\/strong>\u00a0ao atributo <code>content<\/code> do bloco T\u00edtulo e os campos <strong>Latitude<\/strong> e <strong>Longitude<\/strong> aos blocos de Par\u00e1grafo correspondentes.<\/p>\n<p>Agora, conecte os dois \u00faltimos blocos \u00e0 sua fonte de vincula\u00e7\u00e3o personalizada. Infelizmente, como voc\u00ea viu nas capturas de tela anteriores, essa op\u00e7\u00e3o n\u00e3o est\u00e1 dispon\u00edvel na interface do usu\u00e1rio do editor.<\/p>\n<p>Atualmente, voc\u00ea precisa alternar para o editor de c\u00f3digo e escrever manualmente a marca\u00e7\u00e3o para os dois blocos vinculados \u00e0 sua fonte de vincula\u00e7\u00e3o. Abaixo est\u00e1 o c\u00f3digo para exibir a temperatura fornecida pelo servi\u00e7o 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>Com esse m\u00e9todo, o nome da sua fonte de vincula\u00e7\u00e3o aparecer\u00e1 no editor como <strong>Weather Condition<\/strong>, mas os dados reais s\u00f3 ser\u00e3o vis\u00edveis no frontend.<\/p>\n<figure id=\"attachment_202470\" aria-describedby=\"caption-attachment-202470\" style=\"width: 2292px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-202470 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/block-bindings-example.jpg\" alt=\"Um exemplo de vincula\u00e7\u00f5es de bloco com fontes de dados personalizadas\" width=\"2292\" height=\"1358\"><figcaption id=\"caption-attachment-202470\" class=\"wp-caption-text\">Um exemplo de vincula\u00e7\u00f5es de bloco com fontes de dados personalizadas.<\/figcaption><\/figure>\n<p>Claramente, adicionar manualmente um objeto JSON \u00e0 marca\u00e7\u00e3o do bloco n\u00e3o \u00e9 um processo f\u00e1cil para o usu\u00e1rio. Felizmente, o <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-6-9\/\">WordPress 6.9<\/a> introduziu melhorias significativas na API de vincula\u00e7\u00e3o de blocos, possibilitando a cria\u00e7\u00e3o de uma interface do usu\u00e1rio para fontes de dados personalizadas. Vamos melhorar nosso plugin com uma interface personalizada.<\/p>\n<h2>Como criar uma interface para suas fontes personalizadas na API de vincula\u00e7\u00e3o de blocos<\/h2>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Adiamos esta parte do projeto porque os recursos necess\u00e1rios est\u00e3o dispon\u00edveis apenas no WordPress 6.9 ou superior. O c\u00f3digo a seguir n\u00e3o funcionar\u00e1 se voc\u00ea estiver usando uma vers\u00e3o anterior do WordPress.<\/p>\n<\/aside>\n\n<p>Para criar uma interface do usu\u00e1rio para sua fonte de vincula\u00e7\u00e3o personalizada, voc\u00ea precisa escrever algum c\u00f3digo JavaScript. Primeiro, crie uma subpasta <code>js<\/code> em <code>\/includes<\/code> e, em seguida, crie o arquivo <strong>block-bindings-ui.js<\/strong> dentro dela. A estrutura do plugin agora \u00e9 a seguinte:<\/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>Como primeira etapa, adicione o script JS ao arquivo principal do 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>Veja o que essa fun\u00e7\u00e3o faz:<\/p>\n<ul>\n<li>Primeiro, verifica se a fun\u00e7\u00e3o <code>register_block_bindings_source()<\/code> existe.<\/li>\n<li>Em seguida, verifica se o arquivo <code>block-bindings-ui.js<\/code> existe na pasta <code>\/includes\/js<\/code> do plugin.<\/li>\n<li>A fun\u00e7\u00e3o <code>wp_enqueue_script()<\/code> registra o script para uso no editor. Para uma descri\u00e7\u00e3o detalhada dessa fun\u00e7\u00e3o, consulte a <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/\">documenta\u00e7\u00e3o<\/a>.<\/li>\n<li>Ela usa o <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/enqueue_block_editor_assets\/\">hook <code>enqueue_block_editor_assets<\/code><\/a> para carregar scripts na interface de edi\u00e7\u00e3o.<\/li>\n<\/ul>\n<p>Em seguida, abra o arquivo <code>block-bindings-ui.js<\/code> e escreva o seguinte c\u00f3digo:<\/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>A fun\u00e7\u00e3o <code>registerBlockBindingsSource()<\/code> registra uma fonte de vincula\u00e7\u00e3o no editor de blocos.<\/li>\n<li><code>name<\/code> \u00e9 um identificador exclusivo para sua fonte de vincula\u00e7\u00e3o. Ele deve corresponder exatamente ao nome usado no PHP com <code>register_block_bindings_source()<\/code>.<\/li>\n<li><code>label<\/code> \u00e9 um nome leg\u00edvel por humanos exibido no menu suspenso <strong>Source (Fonte)<\/strong> do painel <strong>Attributes (Atributos)<\/strong>.<\/li>\n<li><code>useContext<\/code> define os valores de contexto que essa fonte precisa do bloco. <code>postId<\/code> \u00e9 obrigat\u00f3rio para que a fonte saiba de qual post ler os dados meta ou meteorol\u00f3gicos.<\/li>\n<li><code>getValues<\/code> fornece uma pr\u00e9via do valor vinculado dentro do editor de blocos. Ele retorna as op\u00e7\u00f5es que aparecem no menu suspenso depois que o usu\u00e1rio seleciona a fonte de vincula\u00e7\u00e3o (\u201cWeather Condition\u201d, no nosso exemplo). Esse m\u00e9todo est\u00e1 dispon\u00edvel desde o WordPress 6.9.<\/li>\n<li><code>getFieldsList<\/code> retorna as op\u00e7\u00f5es que aparecem no menu suspenso depois que o usu\u00e1rio seleciona a fonte de vincula\u00e7\u00e3o (\u201cWeather Conditions\u201d, no nosso exemplo).<\/li>\n<\/ul>\n<p>Salve o arquivo e retorne ao editor. Sua fonte <strong>Weather Conditions<\/strong> agora est\u00e1 dispon\u00edvel na interface do usu\u00e1rio do editor, ao lado de <strong>Post Meta<\/strong>. Recarregue a p\u00e1gina e conecte um bloco de Par\u00e1grafo ou Cabe\u00e7alho \u00e0 sua fonte de associa\u00e7\u00e3o. A imagem abaixo mostra o resultado.<\/p>\n<figure id=\"attachment_202472\" aria-describedby=\"caption-attachment-202472\" style=\"width: 2112px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-202472 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/custom-binding-source-ui.png\" alt=\"Interface de fonte personalizada da vincula\u00e7\u00e3o de blocos.\" width=\"2112\" height=\"992\"><figcaption id=\"caption-attachment-202472\" class=\"wp-caption-text\">Interface de fonte personalizada da vincula\u00e7\u00e3o de blocos.<\/figcaption><\/figure>\n<p>A imagem final mostra o resultado no frontend do site.<\/p>\n<figure id=\"attachment_202474\" aria-describedby=\"caption-attachment-202474\" style=\"width: 1374px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-202474 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/custom-data-with-block-bindings.jpg\" alt=\"Um artigo que exibe dados vinculados a uma fonte de dados externa\" width=\"1374\" height=\"986\"><figcaption id=\"caption-attachment-202474\" class=\"wp-caption-text\">Um artigo que exibe dados vinculados a uma fonte de dados externa.<\/figcaption><\/figure>\n<h2>O que mais voc\u00ea pode fazer com a API de vincula\u00e7\u00e3o de blocos?<\/h2>\n<p>Este artigo apenas arranha a superf\u00edcie do que voc\u00ea pode criar com a API de vincula\u00e7\u00e3o de blocos. O melhor de tudo \u00e9 que o desenvolvimento desse poderoso recurso do WordPress est\u00e1 longe de terminar, e podemos esperar novas implementa\u00e7\u00f5es e melhorias no futuro.<\/p>\n<p>A integra\u00e7\u00e3o da API de vincula\u00e7\u00e3o de blocos com outras APIs avan\u00e7adas do WordPress, como a <a href=\"https:\/\/kinsta.com\/pt\/blog\/api-de-interatividade-wordpress\/\">API de interatividade<\/a>, permite criar solu\u00e7\u00f5es din\u00e2micas e interativas que v\u00e3o muito al\u00e9m dos recursos tradicionais de blog que tornaram o WordPress popular em seus primeiros anos.<\/p>\n<p>O WordPress n\u00e3o \u00e9 mais apenas uma plataforma de blogs ou um construtor de sites. Ele est\u00e1 se tornando uma plataforma de desenvolvimento multiprop\u00f3sito para todos os tipos de aplicativos web.<\/p>\n<p>\u00c0 medida que seus projetos se tornam mais complexos, a escolha da infraestrutura de hospedagem passa a ter um papel fundamental. A Kinsta oferece hospedagem gerenciada premium com alto desempenho, seguran\u00e7a avan\u00e7ada, automa\u00e7\u00e3o e suporte especializado, reconhecido pelos <a href=\"https:\/\/kinsta.com\/pt\/blog\/premio-g2\/\">usu\u00e1rios do G2<\/a>.<\/p>\n<p>Para sites que exigem desempenho consistente e confiabilidade, confira os <a href=\"https:\/\/kinsta.com\/pt\/precos\/\">planos da Kinsta<\/a> e encontre a op\u00e7\u00e3o mais adequada \u00e0s necessidades do seu site.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A API de vincula\u00e7\u00e3o de blocos \u00e9 uma ferramenta poderosa do editor de blocos que permite conectar qualquer fonte de dados aos atributos de um bloco. &#8230;<\/p>\n","protected":false},"author":36,"featured_media":74080,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1026],"class_list":["post-74079","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-desenvolvimento-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>A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos<\/title>\n<meta name=\"description\" content=\"Tudo o que voc\u00ea precisa saber sobre a API de Vincula\u00e7\u00e3o de Blocos do WordPress, uma API poderosa para desenvolvedores integrarem qualquer fonte de dados aos seus sites.\" \/>\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\/pt\/blog\/api-vinculacao-blocos-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos\" \/>\n<meta property=\"og:description\" content=\"Tudo o que voc\u00ea precisa saber sobre a API de Vincula\u00e7\u00e3o de Blocos do WordPress, uma API poderosa para desenvolvedores integrarem qualquer fonte de dados aos seus sites.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-09T08:57:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-15T11:13:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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=\"Tudo o que voc\u00ea precisa saber sobre a API de Vincula\u00e7\u00e3o de Blocos do WordPress, uma API poderosa para desenvolvedores integrarem qualquer fonte de dados aos seus sites.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos\",\"datePublished\":\"2026-01-09T08:57:25+00:00\",\"dateModified\":\"2026-01-15T11:13:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/\"},\"wordCount\":2970,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\",\"inLanguage\":\"pt-PT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/\",\"name\":\"A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\",\"datePublished\":\"2026-01-09T08:57:25+00:00\",\"dateModified\":\"2026-01-15T11:13:45+00:00\",\"description\":\"Tudo o que voc\u00ea precisa saber sobre a API de Vincula\u00e7\u00e3o de Blocos do WordPress, uma API poderosa para desenvolvedores integrarem qualquer fonte de dados aos seus sites.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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\/pt\/blog\/api-vinculacao-blocos-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Desenvolvimento WordPress\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/desenvolvimento-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/pt\/#website\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"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\/pt\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/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\/pt\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos","description":"Tudo o que voc\u00ea precisa saber sobre a API de Vincula\u00e7\u00e3o de Blocos do WordPress, uma API poderosa para desenvolvedores integrarem qualquer fonte de dados aos seus sites.","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\/pt\/blog\/api-vinculacao-blocos-wordpress\/","og_locale":"pt_PT","og_type":"article","og_title":"A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos","og_description":"Tudo o que voc\u00ea precisa saber sobre a API de Vincula\u00e7\u00e3o de Blocos do WordPress, uma API poderosa para desenvolvedores integrarem qualquer fonte de dados aos seus sites.","og_url":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2026-01-09T08:57:25+00:00","article_modified_time":"2026-01-15T11:13:45+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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":"Tudo o que voc\u00ea precisa saber sobre a API de Vincula\u00e7\u00e3o de Blocos do WordPress, uma API poderosa para desenvolvedores integrarem qualquer fonte de dados aos seus sites.","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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_pt","twitter_misc":{"Escrito por":"Carlo Daniele","Tempo estimado de leitura":"22 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos","datePublished":"2026-01-09T08:57:25+00:00","dateModified":"2026-01-15T11:13:45+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/"},"wordCount":2970,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","inLanguage":"pt-PT"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/","url":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/","name":"A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","datePublished":"2026-01-09T08:57:25+00:00","dateModified":"2026-01-15T11:13:45+00:00","description":"Tudo o que voc\u00ea precisa saber sobre a API de Vincula\u00e7\u00e3o de Blocos do WordPress, uma API poderosa para desenvolvedores integrarem qualquer fonte de dados aos seus sites.","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/api-vinculacao-blocos-wordpress\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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\/pt\/blog\/api-vinculacao-blocos-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Desenvolvimento WordPress","item":"https:\/\/kinsta.com\/pt\/topicos\/desenvolvimento-wordpress\/"},{"@type":"ListItem","position":3,"name":"A API de vincula\u00e7\u00e3o de blocos do WordPress: o que \u00e9 e como us\u00e1-la para criar sites din\u00e2micos"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/pt\/#website","url":"https:\/\/kinsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","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\/pt\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/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\/pt\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/74079","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=74079"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/74079\/revisions"}],"predecessor-version":[{"id":74145,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/74079\/revisions\/74145"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/74079\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/74079\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/74079\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/74079\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/74079\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/74079\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/74079\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/74079\/translations\/es"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/74079\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/74080"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=74079"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=74079"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=74079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}