{"id":82055,"date":"2026-01-09T09:46:08","date_gmt":"2026-01-09T08:46:08","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=82055&#038;preview=true&#038;preview_id=82055"},"modified":"2026-01-13T09:00:29","modified_gmt":"2026-01-13T08:00:29","slug":"api-wordpress-block-bindings","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/","title":{"rendered":"L&rsquo;API WordPress Block Bindings : Qu&rsquo;est-ce que c&rsquo;est et comment l&rsquo;utiliser pour construire des sites web dynamiques ?"},"content":{"rendered":"<p>L&rsquo;API Block Bindings est un outil puissant de l&rsquo;\u00e9diteur de blocs qui vous permet de connecter n&rsquo;importe quelle source de donn\u00e9es aux attributs d&rsquo;un bloc.<\/p>\n<p>Cette API a \u00e9t\u00e9 introduite pour la premi\u00e8re fois <span style=\"margin: 0px;padding: 0px\">dans <a href=\"https:\/\/kinsta.com\/fr\/blog\/wordpress-6-5\/#block-bindings-api\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress 6.5<\/a> et, dans sa version initiale<\/span>, elle permettait aux utilisateurs de WordPress d&rsquo;afficher les valeurs des champs personnalis\u00e9s dans les articles et les pages.<\/p>\n<p>L&rsquo;API Block Bindings sert de base \u00e0 d&rsquo;autres fonctionnalit\u00e9s robustes de WordPress. Parmi les exemples, on peut citer le <a href=\"https:\/\/kinsta.com\/fr\/blog\/wordpress-6-6\/#synced-pattern-overrides\">mod\u00e8le Synced<\/a> et la variation du bloc <strong>Date de publication<\/strong>\u00a0introduite dans <a href=\"https:\/\/kinsta.com\/fr\/blog\/wordpress-6-9\/#block-bindings-api-improvements\">WordPress 6.9<\/a>.<\/p>\n<p>Alors, qu&rsquo;est-ce que l&rsquo;API Block Bindings ? Et \u00e0 quoi sert-elle ? Nous vous proposons une introduction simple et un exemple concret montrant comment cr\u00e9er des liens entre les blocs Gutenberg et des sources de donn\u00e9es externes.<\/p>\n<p>Mettons-nous au travail.<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&rsquo;API Block Bindings : Concepts de base<\/h2>\n<p>Comme nous l&rsquo;avons mentionn\u00e9 plus haut, l&rsquo;API Block Bindings vous permet de cr\u00e9er des liens entre une source de donn\u00e9es et les attributs d&rsquo;un bloc.<\/p>\n<p>Si vous n&rsquo;\u00eates pas familier avec les attributs de bloc, naviguez jusqu&rsquo;au r\u00e9pertoire <code>src<\/code> de la biblioth\u00e8que de blocs du projet Gutenberg sur GitHub, trouvez le bloc Paragraphe et ouvrez le <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/blob\/trunk\/packages\/block-library\/src\/paragraph\/block.json\" target=\"_blank\" rel=\"noopener noreferrer\">fichier <code>block.json<\/code><\/a>. La propri\u00e9t\u00e9 <code>attributes<\/code> fournit une liste des attributs du bloc Paragraphe.<\/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>Les blocs suivants prennent en charge l&rsquo;API Block Bindings \u00e0 partir de WordPress 6.9 et peuvent donc \u00eatre li\u00e9s \u00e0 vos champs personnalis\u00e9s :<\/p>\n<table>\n<thead>\n<tr>\n<th>Blocs pris en charge<\/th>\n<th>Attributs<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Paragraphe<\/td>\n<td>contenu<\/td>\n<\/tr>\n<tr>\n<td>Titre<\/td>\n<td>contenu<\/td>\n<\/tr>\n<tr>\n<td>Image<\/td>\n<td>id, url, alt, title, caption<\/td>\n<\/tr>\n<tr>\n<td>Bouton<\/td>\n<td>texte, url, linkTarget, rel<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Pour connecter vos champs personnalis\u00e9s aux blocs Gutenberg, vous devez d&rsquo;abord <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/\" target=\"_blank\" rel=\"noopener noreferrer\">les enregistrer<\/a>. Le code suivant enregistre un champ personnalis\u00e9 via une extension WordPress ou le <a href=\"https:\/\/kinsta.com\/fr\/blog\/wordpress-functions-php\/\">fichier <code>functions.php<\/code><\/a> de votre th\u00e8me :<\/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> accepte un tableau d&rsquo;attributs qui d\u00e9finissent les caract\u00e9ristiques des champs personnalis\u00e9s, et la documentation en fournit une <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_meta\/\">liste compl\u00e8te<\/a>. Pour qu&rsquo;un champ personnalis\u00e9 soit accessible \u00e0 l&rsquo;API Block Bindings, vous devez attribuer la valeur true \u00e0 <code>show_in_rest<\/code>. Depuis WordPress 6.9, <code>string<\/code> est le seul type pris en charge.<\/p>\n<p>Pour voir l&rsquo;API Block Bindings en action avec les champs personnalis\u00e9s, cr\u00e9ez une nouvelle extension WordPress et enregistrez un champ m\u00e9ta avec le code ci-dessus.<\/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>Dans votre tableau de bord WordPress, activez l&rsquo;extension. Ensuite, acc\u00e9dez \u00e0 l&rsquo;\u00e9cran Articles et cr\u00e9ez un nouvel article. Lorsque vous s\u00e9lectionnez un bloc pris en charge, le panneau <strong>Attributs<\/strong> dans la colonne lat\u00e9rale R\u00e9glages du bloc affiche la liste des attributs qui peuvent \u00eatre li\u00e9s \u00e0 un champ personnalis\u00e9 enregistr\u00e9.<\/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=\"Attributs du bloc d'images prenant en charge Block Bindings\" width=\"2094\" height=\"1016\"><figcaption id=\"caption-attachment-202443\" class=\"wp-caption-text\">Attributs du bloc d&rsquo;images prenant en charge Block Bindings<\/figcaption><\/figure>\n<p>Ouvrez le menu <strong>Options<\/strong> dans le coin sup\u00e9rieur droit et s\u00e9lectionnez <strong>Pr\u00e9f\u00e9rences<\/strong>. Dans l&rsquo;onglet <strong>G\u00e9n\u00e9ral<\/strong>, localisez la section <strong>Avanc\u00e9<\/strong> et activez les champs personnalis\u00e9s. Enregistrez vos modifications, attendez que la page se recharge, puis revenez \u00e0 l&rsquo;\u00e9diteur.<\/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=\"Activer les champs personnalis\u00e9s dans les pr\u00e9f\u00e9rences de l'\u00e9diteur.\" width=\"1490\" height=\"1006\"><figcaption id=\"caption-attachment-202434\" class=\"wp-caption-text\">Activer les champs personnalis\u00e9s dans les pr\u00e9f\u00e9rences de l&rsquo;\u00e9diteur.<\/figcaption><\/figure>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Nous supposons que nous voulons ajouter des champs personnalis\u00e9s manuellement. La cr\u00e9ation d&rsquo;une <a href=\"https:\/\/kinsta.com\/fr\/blog\/wordpress-6-7\/#meta-boxes-in-the-post-editor\">interface qui simplifie<\/a> l&rsquo;insertion de champs personnalis\u00e9s d\u00e9passe le cadre de cet article.<\/p>\n<\/aside>\n\n<p>L&rsquo;\u00e9tape suivante consiste \u00e0 ins\u00e9rer un bloc Image. Une fois le bloc s\u00e9lectionn\u00e9, cliquez sur l&rsquo;ic\u00f4ne <strong>+<\/strong> dans le panneau <strong>Attributs<\/strong> et s\u00e9lectionnez l&rsquo;attribut <strong>url<\/strong>. Le panneau Attributs affiche alors une liste des champs m\u00e9ta disponibles. S\u00e9lectionnez \u00e0 nouveau l&rsquo;attribut url. Vous verrez maintenant la liste des champs m\u00e9ta disponibles pour le type de publication actuel.<\/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=\"Lier un champ personnalis\u00e9 \u00e0 l'attribut url d'un bloc Image dans l'interface de liaison des blocs.\" width=\"2162\" height=\"930\"><figcaption id=\"caption-attachment-202436\" class=\"wp-caption-text\">Lier un champ personnalis\u00e9 \u00e0 l&rsquo;attribut url d&rsquo;un bloc Image dans l&rsquo;interface de liaison des blocs.<\/figcaption><\/figure>\n<p>S\u00e9lectionnez votre champ m\u00e9ta et enregistrez la publication. Vous devriez maintenant voir votre image \u00e0 la fois dans l&rsquo;\u00e9diteur et dans l&rsquo;interface publique.<\/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=\"Un bloc Image avec l'attribut url li\u00e9 \u00e0 la valeur d'un champ personnalis\u00e9.\" width=\"2162\" height=\"1074\"><figcaption id=\"caption-attachment-202439\" class=\"wp-caption-text\">Un bloc Image avec l&rsquo;attribut url li\u00e9 \u00e0 la valeur d&rsquo;un champ personnalis\u00e9.<\/figcaption><\/figure>\n<p>\u00c0 partir de la <a href=\"https:\/\/kinsta.com\/fr\/blog\/wordpress-6-7\/\">version 6.7 de WordPress<\/a>, vous pouvez utiliser l&rsquo;attribut Label pour afficher du texte dans l&rsquo;interface de l&rsquo;\u00e9diteur. Le bloc de code suivant en est un exemple :<\/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=\"Libell\u00e9s de champs personnalis\u00e9s dans l'interface utilisateur de Block Bindings\" width=\"2148\" height=\"1134\"><figcaption id=\"caption-attachment-202441\" class=\"wp-caption-text\">Libell\u00e9s de champs personnalis\u00e9s dans l&rsquo;interface utilisateur de Block Bindings<\/figcaption><\/figure>\n<p>Lorsque vous ouvrez l&rsquo;\u00e9diteur de code, vous pouvez voir un objet JSON dans le d\u00e9limiteur du bloc d&rsquo;images. La propri\u00e9t\u00e9 <code>metadata.bindings.url<\/code> indique que l&rsquo;adresse <code>url<\/code> du bloc d&rsquo;images est li\u00e9e \u00e0 un champ de m\u00e9tadonn\u00e9es.<\/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 propri\u00e9t\u00e9 <code>source<\/code> sp\u00e9cifie la source de donn\u00e9es pour les liaisons de blocs. La propri\u00e9t\u00e9 <code>args.key<\/code> \u00e9tablit une r\u00e9f\u00e9rence \u00e0 votre champ de m\u00e9tadonn\u00e9es.<\/p>\n<p>L&rsquo;aspect le plus int\u00e9ressant de l&rsquo;API Block Bindings est sa capacit\u00e9 \u00e0 enregistrer des sources de donn\u00e9es personnalis\u00e9es, ce qui ouvre de nouvelles possibilit\u00e9s int\u00e9ressantes pour les d\u00e9veloppeurs. Nous allons maintenant voir comment utiliser des donn\u00e9es provenant de services tiers avec l&rsquo;API Block Bindings.<\/p>\n<h2>Comment enregistrer des sources de donn\u00e9es Block Bindings personnalis\u00e9es : Un exemple concret<\/h2>\n<p>Une fois que vous vous serez familiaris\u00e9 avec les concepts de base de l&rsquo;API Block Bindings, nous pourrons passer \u00e0 ses aspects les plus avanc\u00e9s et les plus int\u00e9ressants pour les d\u00e9veloppeurs.<\/p>\n<p>Comme nous l&rsquo;avons d\u00e9j\u00e0 mentionn\u00e9, l&rsquo;API Block Bindings vous permet d&rsquo;enregistrer des sources de donn\u00e9es personnalis\u00e9es. Vous pouvez ainsi r\u00e9cup\u00e9rer des donn\u00e9es \u00e0 partir d&rsquo;une source distante et\/ou manipuler des donn\u00e9es brutes pour g\u00e9n\u00e9rer des informations utiles qui peuvent \u00eatre ins\u00e9r\u00e9es automatiquement dans votre contenu.<\/p>\n<p>Dans cette section, vous apprendrez \u00e0 maximiser le potentiel des Block Bindings gr\u00e2ce \u00e0 un exemple pratique que vous pourrez utiliser comme base pour d\u00e9velopper vos propres applications personnalis\u00e9es.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Veuillez noter que le code fourni dans l&rsquo;exemple suivant est uniquement destin\u00e9 \u00e0 la d\u00e9monstration et ne doit pas \u00eatre utilis\u00e9 en production.<\/p>\n<\/aside>\n\n<p>Supposons que vous souhaitiez r\u00e9cup\u00e9rer des donn\u00e9es \u00e0 partir d&rsquo;une source externe et les afficher dans vos articles, pages ou <a href=\"https:\/\/kinsta.com\/fr\/blog\/types-publications-personnalises-wordpress\/\">types de publication personnalis\u00e9s<\/a>. Par exemple, vous pourriez interroger l&rsquo;API d&rsquo;un service m\u00e9t\u00e9orologique en envoyant une requ\u00eate contenant la latitude et la longitude d&rsquo;une ville pour obtenir des donn\u00e9es m\u00e9t\u00e9orologiques en temps r\u00e9el, que vous pourriez ensuite afficher sur votre site.<\/p>\n<p>Gr\u00e2ce \u00e0 l&rsquo;API Block Bindings, vous pouvez afficher la temp\u00e9rature actuelle ou fournir \u00e0 vos lecteurs les pr\u00e9visions m\u00e9t\u00e9orologiques pour les jours \u00e0 venir. Vous pouvez \u00e9galement modifier par programme l&rsquo;attribut <code>url<\/code> d&rsquo;une ou plusieurs images de la page en fonction des conditions m\u00e9t\u00e9orologiques.<\/p>\n<p>Pour ajouter cette fonctionnalit\u00e9 \u00e0 votre site WordPress, vous devez cr\u00e9er une extension. Suivez les \u00e9tapes suivantes :<\/p>\n<h3>\u00c9tape 1 : Cr\u00e9er un plugin basique<\/h3>\n<p>La premi\u00e8re \u00e9tape consiste \u00e0 cr\u00e9er les fichiers de l&rsquo;extension. Naviguez jusqu&rsquo;au r\u00e9pertoire <code>wp-content\/plugins<\/code> de votre installation WordPress et cr\u00e9ez un nouveau dossier appel\u00e9 <code>block-bindings-example<\/code>. Dans ce dossier, ajoutez les fichiers suivants :<\/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>Ouvrez le fichier <code>block-bindings-example.php<\/code> dans votre <a href=\"https:\/\/kinsta.com\/fr\/blog\/editeurs-html-gratuits\/\">\u00e9diteur de code<\/a> pr\u00e9f\u00e9r\u00e9 et ajoutez le code suivant :<\/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>Voici ce que fait ce code :<\/p>\n<ul>\n<li>La constante <code>BB_WEATHER_CACHE_TIME<\/code> d\u00e9termine la dur\u00e9e de mise en cache des donn\u00e9es m\u00e9t\u00e9orologiques. Cela permet de r\u00e9duire les appels \u00e0 l&rsquo;API, d&rsquo;am\u00e9liorer les performances des pages et de diminuer les co\u00fbts de service.<\/li>\n<li>Les expressions <code>require_once<\/code> comprennent les scripts n\u00e9cessaires pour enregistrer les champs m\u00e9ta, enregistrer la source de liaison et r\u00e9cup\u00e9rer les donn\u00e9es de l&rsquo;API.<\/li>\n<li>La fonction d&rsquo;installation appelle deux fonctions qui enregistrent les champs m\u00e9ta des publications et les sources de liaison personnalis\u00e9es.<\/li>\n<\/ul>\n<h3>\u00c9tape 2 : Enregistrement des champs m\u00e9ta des publications<\/h3>\n<p>L&rsquo;\u00e9tape suivante consiste \u00e0 enregistrer les champs m\u00e9ta dont vous avez besoin pour votre cas d&rsquo;utilisation. Ouvrez le fichier <code>meta-fields.php<\/code> dans le dossier <code>includes<\/code> et ajoutez le code suivant :<\/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 fonction <code>register_post_meta<\/code> enregistre une cl\u00e9 m\u00e9ta \u00e0 utiliser dans les publications. Notez que pour utiliser les champs m\u00e9ta enregistr\u00e9s de cette mani\u00e8re avec l&rsquo;API Block Bindings, vous devez d\u00e9finir <code>show_in_rest<\/code> sur <code>true<\/code> et <code>type<\/code> sur <code>string<\/code>. Consultez la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/\" target=\"_blank\" rel=\"noopener noreferrer\">documentation<\/a> pour plus d&rsquo;informations.<\/p>\n<h3>\u00c9tape 3 : Enregistrement de la source de Block Bindings<\/h3>\n<p>Il est temps d&rsquo;enregistrer la source de votre liaison. Ouvrez le fichier <code>binding-sources.php<\/code> et ajoutez le code suivant :<\/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 fonction <code>register_block_bindings_source()<\/code> requiert le nom de la source et une fonction de rappel qui r\u00e9cup\u00e8re les donn\u00e9es d&rsquo;une source et renvoie la valeur manipul\u00e9e.<\/p>\n<p>Ensuite, dans le m\u00eame fichier <code>binding-sources.php<\/code>, d\u00e9finissez la fonction de rappel.<\/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>D\u00e9composons cette fonction :<\/p>\n<ul>\n<li><code>$source_args['key']<\/code> identifie les donn\u00e9es li\u00e9es \u00e0 l&rsquo;attribut block.<\/li>\n<li>La ligne suivante r\u00e9cup\u00e8re l&rsquo;ID de l&rsquo;article en cours \u00e0 partir de <code>context<\/code>. Si <code>context<\/code> est manquant, comme cela peut \u00eatre le cas avec les aper\u00e7us, l&rsquo;ID de l&rsquo;article en cours est r\u00e9cup\u00e9r\u00e9 \u00e0 l&rsquo;aide de <code>get_the_ID()<\/code>.<\/li>\n<li>Ensuite, elle appelle la fonction <code>bb_fetch_and_cache_weather_data<\/code>, qui r\u00e9cup\u00e8re les donn\u00e9es de l&rsquo;API. Nous d\u00e9finirons cette fonction \u00e0 l&rsquo;\u00e9tape suivante.<\/li>\n<li><code>$weather_data[$key]<\/code> contient les donn\u00e9es fournies par l&rsquo;API, telles que la temp\u00e9rature et le temps qu&rsquo;il fait.<\/li>\n<li>Si la cl\u00e9 est <code>temperature<\/code>, elle ajoute <code>\u00b0C<\/code> \u00e0 la valeur fournie.<\/li>\n<li>La fonction renvoie ensuite la valeur finale.<\/li>\n<\/ul>\n<h3>\u00c9tape 4 : R\u00e9cup\u00e9rer des donn\u00e9es \u00e0 partir d&rsquo;une source externe<\/h3>\n<p>Comme indiqu\u00e9 ci-dessus, nous r\u00e9cup\u00e9rons les donn\u00e9es du <a href=\"https:\/\/open-meteo.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">service Open-Meteo<\/a> (gratuit pour une utilisation non commerciale).<\/p>\n<p>Pour r\u00e9cup\u00e9rer la temp\u00e9rature et les conditions m\u00e9t\u00e9orologiques actuelles, vous devez envoyer une requ\u00eate \u00e0 l&rsquo;API qui inclut la latitude et la longitude d&rsquo;un lieu donn\u00e9 et la requ\u00eate var <code>current=weather_code,temperature_2m<\/code>. Vous trouverez ci-dessous un exemple de requ\u00eate :<\/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&rsquo;API fournit une r\u00e9ponse similaire \u00e0 la suivante :<\/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=\"R\u00e9ponse Open-Meteo dans Postman pour Visual Studio Code\" width=\"2336\" height=\"1642\"><figcaption id=\"caption-attachment-202460\" class=\"wp-caption-text\">R\u00e9ponse Open-Meteo dans Postman pour Visual Studio Code<\/figcaption><\/figure>\n<p>Maintenant que vous savez comment obtenir les donn\u00e9es dont vous avez besoin, ouvrez le fichier <code>weather-api.php<\/code> et ajoutez le code suivant :<\/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>Cette fonction r\u00e9cup\u00e8re les donn\u00e9es m\u00e9t\u00e9orologiques actuelles de l&rsquo;API Open-Meteo et les stocke dans le cache \u00e0 l&rsquo;aide de <a href=\"https:\/\/kinsta.com\/fr\/blog\/donnees-wp-options-automatiquement-chargees\/#clean-up-transients\">transients<\/a>. Regardons de plus pr\u00e8s.<\/p>\n<ul>\n<li>Deux appels \u00e0 <code>get_post_meta<\/code> r\u00e9cup\u00e8rent la latitude et la longitude de votre position.<\/li>\n<li>Les deux lignes suivantes normalisent le s\u00e9parateur d\u00e9cimal au cas o\u00f9 l&rsquo;utilisateur saisirait une virgule au lieu d&rsquo;un point.<\/li>\n<li>Le bloc conditionnel v\u00e9rifie que les valeurs sont au format num\u00e9rique \u00e0 l&rsquo;aide de <code>is_numeric()<\/code>.<\/li>\n<li>Ensuite, il v\u00e9rifie si les donn\u00e9es sont dans le cache. Si c&rsquo;est le cas, il renvoie les donn\u00e9es mises en cache et arr\u00eate la fonction sans envoyer de requ\u00eate \u00e0 l&rsquo;API.<\/li>\n<li>Si aucune donn\u00e9e n&rsquo;est trouv\u00e9e dans le cache, la requ\u00eate est cr\u00e9\u00e9e et la r\u00e9ponse est stock\u00e9e.<\/li>\n<li>Les lignes suivantes fournissent <code>temperature<\/code> et <code>weather_code<\/code>.<\/li>\n<li><code>weather_code<\/code> est mapp\u00e9 \u00e0 <code>weather_state<\/code> gr\u00e2ce \u00e0 la fonction <code>bb_map_wmo_code_to_state<\/code>, qui est d\u00e9finie ci-dessous.<\/li>\n<li>Les donn\u00e9es sont sauvegard\u00e9es avec <code>set_transient<\/code>.<\/li>\n<li>Enfin, la fonction renvoie les donn\u00e9es mapp\u00e9es.<\/li>\n<\/ul>\n<p>Enfin, d\u00e9finissez la fonction qui traduit <code>weather_code<\/code> en une cha\u00eene lisible par l&rsquo;homme :<\/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>Le code est termin\u00e9 et votre extension est pr\u00eate \u00e0 \u00eatre test\u00e9e.<\/p>\n<h2>Comment utiliser l&rsquo;API Block Bindings<\/h2>\n<p>Il est temps d&rsquo;apprendre \u00e0 utiliser les nouvelles fonctionnalit\u00e9s ajout\u00e9es \u00e0 votre site gr\u00e2ce \u00e0 l&rsquo;API Block Bindings !<\/p>\n<p>Dans votre tableau de bord WordPress, acc\u00e9dez \u00e0 l&rsquo;\u00e9cran Extensions et activez l&rsquo;extension <strong>Block Bindings Example<\/strong> que vous venez de cr\u00e9er.<\/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=\"Activer l'extension dans votre tableau de bord WordPress.\" width=\"2300\" height=\"1246\"><figcaption id=\"caption-attachment-202462\" class=\"wp-caption-text\">Activer l&rsquo;extension dans votre tableau de bord WordPress.<\/figcaption><\/figure>\n<p>Ensuite, cr\u00e9ez un nouvel article ou une nouvelle page. Ajoutez un bloc Image, un titre et quatre blocs Row contenant chacun deux paragraphes, comme le montre l&rsquo;image ci-dessous. Sauvegardez ensuite la publication.<\/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=\"Ajouter des blocs au canevas de l'\u00e9diteur.\" width=\"1432\" height=\"1084\"><figcaption id=\"caption-attachment-202463\" class=\"wp-caption-text\">Ajouter des blocs au canevas de l&rsquo;\u00e9diteur.<\/figcaption><\/figure>\n<p>Ensuite, ajoutez vos champs personnalis\u00e9s et enregistrez \u00e0 nouveau la publication.<\/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=\"Ajouter des champs personnalis\u00e9s \u00e0 la publication.\" width=\"1728\" height=\"850\"><figcaption id=\"caption-attachment-202464\" class=\"wp-caption-text\">Ajouter des champs personnalis\u00e9s \u00e0 la publication.<\/figcaption><\/figure>\n<p>S\u00e9lectionnez le bloc Image et trouvez le panneau <strong>Attributs<\/strong> dans la colonne lat\u00e9rale R\u00e9glages du bloc. Cliquez sur le bouton <strong>+<\/strong> pour ouvrir le menu d\u00e9roulant, qui affiche la liste des attributs du bloc Image qui prennent en charge Block Bindings. S\u00e9lectionnez l&rsquo;\u00e9l\u00e9ment <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=\"Attributs de blocs d'images prenant en charge Block Bindings\" width=\"2094\" height=\"1016\"><figcaption id=\"caption-attachment-202443\" class=\"wp-caption-text\">Attributs de blocs d&rsquo;images prenant en charge Block Bindings<\/figcaption><\/figure>\n<p>Apr\u00e8s avoir s\u00e9lectionn\u00e9 l&rsquo;attribut de bloc, l&rsquo;onglet <strong>Avanc\u00e9<\/strong> affiche un nouvel \u00e9l\u00e9ment <strong>URL<\/strong> avec la description \u00ab Non connect\u00e9 \u00bb Cliquez \u00e0 nouveau sur l&rsquo;\u00e9l\u00e9ment <strong>url<\/strong> pour afficher la liste des sources de liaison disponibles. <strong>Post Meta<\/strong> fournit les quatre champs personnalis\u00e9s enregistr\u00e9s pour le type de message, ainsi que leurs valeurs respectives. S\u00e9lectionnez <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=\"wp-image-202467 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/registered-post-meta-fields.png\" alt=\"Connecter les champs m\u00e9ta enregistr\u00e9s.\" width=\"2300\" height=\"902\"><figcaption id=\"caption-attachment-202467\" class=\"wp-caption-text\">Connecter les champs m\u00e9ta enregistr\u00e9s.<\/figcaption><\/figure>\n<p>Vous avez attribu\u00e9 le champ m\u00e9ta <strong>City Image URL<\/strong> \u00e0 l&rsquo;attribut <strong>url<\/strong> du bloc Image. Vous devriez maintenant voir une photo de la ville que vous avez choisie.<\/p>\n<p>Proc\u00e9dez de la m\u00eame mani\u00e8re pour les autres champs m\u00e9ta. Attribuez le champ <strong>Nom de la ville<\/strong> \u00e0 l&rsquo;attribut <code>content<\/code> du bloc Titre et les champs <strong>Latitude<\/strong> et <strong>Longitude<\/strong> aux blocs Paragraphe correspondants.<\/p>\n<p>Reliez maintenant les deux derniers blocs \u00e0 votre source de liaison personnalis\u00e9e. Malheureusement, comme vous l&rsquo;avez vu dans les captures d&rsquo;\u00e9cran pr\u00e9c\u00e9dentes, cette option n&rsquo;est pas disponible dans l&rsquo;interface utilisateur de l&rsquo;\u00e9diteur.<\/p>\n<p>Actuellement, vous devez passer \u00e0 l&rsquo;\u00e9diteur de code et \u00e9crire manuellement le balisage pour les deux blocs li\u00e9s \u00e0 votre source de liaison. Vous trouverez ci-dessous le code permettant d&rsquo;afficher la temp\u00e9rature fournie par le service 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>Avec cette m\u00e9thode, le nom de votre source de liaison appara\u00eetra dans l&rsquo;\u00e9diteur comme <strong>Weather Condition<\/strong>, mais les donn\u00e9es r\u00e9elles ne seront visibles que dans la partie 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=\"Un exemple de blocs de liaison avec des sources de donn\u00e9es personnalis\u00e9es\" width=\"2292\" height=\"1358\"><figcaption id=\"caption-attachment-202470\" class=\"wp-caption-text\">Un exemple de blocs de liaison avec des sources de donn\u00e9es personnalis\u00e9es<\/figcaption><\/figure>\n<p>Il est clair que l&rsquo;ajout manuel d&rsquo;un objet JSON \u00e0 la balise du bloc n&rsquo;est pas un processus convivial. Heureusement, <a href=\"https:\/\/kinsta.com\/fr\/blog\/wordpress-6-9\/\">WordPress 6.9<\/a> a apport\u00e9 des am\u00e9liorations significatives \u00e0 l&rsquo;API Block Bindings, rendant possible la cr\u00e9ation d&rsquo;une interface utilisateur pour les sources de donn\u00e9es personnalis\u00e9es. Essayons d&rsquo;am\u00e9liorer notre extension avec une interface utilisateur personnalis\u00e9e.<\/p>\n<h2>Comment cr\u00e9er une interface utilisateur pour vos sources Block Bindings personnalis\u00e9es ?<\/h2>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Nous avons report\u00e9 cette partie du projet car les fonctionnalit\u00e9s n\u00e9cessaires ne sont disponibles qu&rsquo;\u00e0 partir de la version 6.9 de WordPress. Le code suivant ne fonctionnera pas si vous utilisez une version ant\u00e9rieure de WordPress.<\/p>\n<\/aside>\n\n<p>Pour cr\u00e9er une interface utilisateur pour votre source de liaison personnalis\u00e9e, vous devez \u00e9crire du code JavaScript. Tout d&rsquo;abord, cr\u00e9ez un sous-dossier <code>js<\/code> sous <code>\/includes<\/code> et cr\u00e9ez-y un fichier <strong>block-bindings-ui.js<\/strong>. La structure de l&rsquo;extension est maintenant la suivante :<\/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>Dans un premier temps, ajoutez le script JS au fichier principal de votre extension :<\/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>Voici ce que fait cette fonction :<\/p>\n<ul>\n<li>Tout d&rsquo;abord, elle v\u00e9rifie que la fonction <code>register_block_bindings_source()<\/code> existe.<\/li>\n<li>Ensuite, elle v\u00e9rifie que le fichier <code>block-bindings-ui.js<\/code> existe dans le dossier <code>\/includes\/js<\/code> de l&rsquo;extension.<\/li>\n<li>La fonction <code>wp_enqueue_script()<\/code> met en file d&rsquo;attente le script \u00e0 utiliser dans l&rsquo;\u00e9diteur. Pour une description d\u00e9taill\u00e9e de la fonction, veuillez vous r\u00e9f\u00e9rer \u00e0 la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/\" target=\"_blank\" rel=\"noopener noreferrer\">documentation<\/a>.<\/li>\n<li>Elle utilise le <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/enqueue_block_editor_assets\/\" target=\"_blank\" rel=\"noopener noreferrer\">crochet <code>enqueue_block_editor_assets<\/code><\/a> pour mettre en file d&rsquo;attente les scripts pour l&rsquo;interface d&rsquo;\u00e9dition.<\/li>\n<\/ul>\n<p>Ouvrez maintenant le fichier <code>block-bindings-ui.js<\/code> et \u00e9crivez le code suivant :<\/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 fonction <code>registerBlockBindingsSource()<\/code> enregistre une source de reliure dans l&rsquo;\u00e9diteur de blocs.<\/li>\n<li><code>name<\/code> est un identifiant unique pour votre source de liaison. Il doit correspondre exactement au nom utilis\u00e9 en PHP avec <code>register_block_bindings_source()<\/code>.<\/li>\n<li><code>label<\/code> est un nom lisible par l&rsquo;homme, affich\u00e9 dans le menu d\u00e9roulant <strong>Source<\/strong> du panneau <strong>Attributs<\/strong>.<\/li>\n<li><code>useContext<\/code> d\u00e9finit les valeurs de contexte dont cette source a besoin dans le bloc. <code>postId<\/code> est n\u00e9cessaire pour que la source sache quelles donn\u00e9es m\u00e9ta\/m\u00e9t\u00e9o de l&rsquo;article doivent \u00eatre lues.<\/li>\n<li><code>getValues<\/code> fournit un aper\u00e7u de la valeur d\u00e9limit\u00e9e dans l&rsquo;\u00e9diteur de bloc. Elle renvoie les options qui apparaissent dans la liste d\u00e9roulante apr\u00e8s que l&rsquo;utilisateur a s\u00e9lectionn\u00e9 la source de liaison (\u00ab M\u00e9t\u00e9o \u00bb dans notre exemple). Cette m\u00e9thode est disponible depuis WordPress 6.9.<\/li>\n<li><code>getFieldsList<\/code> renvoie les options qui apparaissent dans la liste d\u00e9roulante apr\u00e8s que l&rsquo;utilisateur a s\u00e9lectionn\u00e9 la source de liaison (\u00ab Conditions m\u00e9t\u00e9orologiques \u00bb dans notre exemple).<\/li>\n<\/ul>\n<p>Enregistrez le fichier et revenez \u00e0 l&rsquo;\u00e9diteur. Votre source <strong>Weather Conditions<\/strong> est maintenant disponible dans l&rsquo;interface de l&rsquo;\u00e9diteur, \u00e0 c\u00f4t\u00e9 de <strong>Post Meta<\/strong>. Rechargez la page, puis connectez un bloc Paragraphe ou En-t\u00eate \u00e0 votre source de liaison. L&rsquo;image ci-dessous montre le r\u00e9sultat.<\/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 utilisateur de la source de liaison du bloc personnalis\u00e9\" width=\"2112\" height=\"992\"><figcaption id=\"caption-attachment-202472\" class=\"wp-caption-text\">Interface utilisateur de la source de liaison du bloc personnalis\u00e9<\/figcaption><\/figure>\n<p>L&rsquo;image finale montre le r\u00e9sultat sur le frontend du site 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=\"wp-image-202474 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/12\/custom-data-with-block-bindings.jpg\" alt=\"Une publication qui affiche les donn\u00e9es provenant d'une source externe li\u00e9e. \" width=\"1374\" height=\"986\"><figcaption id=\"caption-attachment-202474\" class=\"wp-caption-text\">Un message qui affiche des donn\u00e9es provenant d&rsquo;une source de liaison externe<\/figcaption><\/figure>\n<h2>Que pouvez-vous faire d&rsquo;autre avec l&rsquo;API Block Bindings ?<\/h2>\n<p>Cet article ne fait qu&rsquo;effleurer la surface de ce que vous pouvez construire avec l&rsquo;API Block Bindings. Ce qui est formidable, c&rsquo;est que le d\u00e9veloppement de cette puissante fonctionnalit\u00e9 de WordPress est loin d&rsquo;\u00eatre termin\u00e9, et nous pouvons nous attendre \u00e0 de nouvelles impl\u00e9mentations et \u00e0 de nouveaux ajouts \u00e0 l&rsquo;avenir.<\/p>\n<p>L&rsquo;int\u00e9gration de l&rsquo;API Block Bindings avec d&rsquo;autres API puissantes de WordPress, telles que l&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/blog\/api-interactivite-wordpress\/\">API Interactivity<\/a>, vous permet de cr\u00e9er des applications dynamiques et interactives qui vont bien au-del\u00e0 des fonctions traditionnelles de blogging qui ont rendu WordPress populaire dans ses premi\u00e8res ann\u00e9es d&rsquo;existence.<\/p>\n<p>WordPress n&rsquo;est plus seulement une plateforme de blogs ou un constructeur de sites web. Il est d\u00e9sormais en passe de devenir une plateforme de d\u00e9veloppement polyvalente pour tous les types d&rsquo;applications web.<\/p>\n<p>Plus vos applications sont puissantes, plus votre service d&rsquo;h\u00e9bergement devient important. Kinsta propose un h\u00e9bergement infog\u00e9r\u00e9 Premium avec de hautes performances, une s\u00e9curit\u00e9 robuste, une automatisation pouss\u00e9e et un support de premier ordre reconnu comme le meilleur de l&rsquo;industrie par les <a href=\"https:\/\/kinsta.com\/fr\/blog\/g2-awards\/\">utilisateurs de G2<\/a>.<\/p>\n<p>Les applications web les plus puissantes n\u00e9cessitent la meilleure infrastructure d&rsquo;h\u00e9bergement. Jetez un coup d&rsquo;\u0153il aux <a href=\"https:\/\/kinsta.com\/fr\/tarifs\/\">plans de Kinsta<\/a> pour trouver celui qui r\u00e9pond le mieux aux besoins de votre site.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;API Block Bindings est un outil puissant de l&rsquo;\u00e9diteur de blocs qui vous permet de connecter n&rsquo;importe quelle source de donn\u00e9es aux attributs d&rsquo;un bloc. Cette &#8230;<\/p>\n","protected":false},"author":36,"featured_media":82056,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1028],"class_list":["post-82055","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-developpement-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 : qu&#039;est-ce que c&#039;est et comment l&#039;utiliser ?<\/title>\n<meta name=\"description\" content=\"Tout ce que vous devez savoir sur l&#039;API WordPress Block Bindings, une puissante API WordPress permettant aux d\u00e9veloppeurs d&#039;int\u00e9grer n&#039;importe quelle source de donn\u00e9es dans leurs sites 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\/fr\/blog\/api-wordpress-block-bindings\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"L&#039;API WordPress Block Bindings : Qu&#039;est-ce que c&#039;est et comment l&#039;utiliser pour construire des sites web dynamiques ?\" \/>\n<meta property=\"og:description\" content=\"Tout ce que vous devez savoir sur l&#039;API WordPress Block Bindings, une puissante API WordPress permettant aux d\u00e9veloppeurs d&#039;int\u00e9grer n&#039;importe quelle source de donn\u00e9es dans leurs sites web.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-09T08:46:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-13T08:00:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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=\"Tout ce que vous devez savoir sur l&#039;API WordPress Block Bindings, une puissante API WordPress permettant aux d\u00e9veloppeurs d&#039;int\u00e9grer n&#039;importe quelle source de donn\u00e9es dans leurs sites web.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"L&rsquo;API WordPress Block Bindings : Qu&rsquo;est-ce que c&rsquo;est et comment l&rsquo;utiliser pour construire des sites web dynamiques ?\",\"datePublished\":\"2026-01-09T08:46:08+00:00\",\"dateModified\":\"2026-01-13T08:00:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/\"},\"wordCount\":3180,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\",\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/\",\"name\":\"L'API WordPress Block Bindings : qu'est-ce que c'est et comment l'utiliser ?\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\",\"datePublished\":\"2026-01-09T08:46:08+00:00\",\"dateModified\":\"2026-01-13T08:00:29+00:00\",\"description\":\"Tout ce que vous devez savoir sur l'API WordPress Block Bindings, une puissante API WordPress permettant aux d\u00e9veloppeurs d'int\u00e9grer n'importe quelle source de donn\u00e9es dans leurs sites web.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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\/fr\/blog\/api-wordpress-block-bindings\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"D\u00e9veloppement WordPress\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/developpement-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"L&#8217;API WordPress Block Bindings : Qu&#8217;est-ce que c&#8217;est et comment l&#8217;utiliser pour construire des sites web dynamiques ?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"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\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"L'API WordPress Block Bindings : qu'est-ce que c'est et comment l'utiliser ?","description":"Tout ce que vous devez savoir sur l'API WordPress Block Bindings, une puissante API WordPress permettant aux d\u00e9veloppeurs d'int\u00e9grer n'importe quelle source de donn\u00e9es dans leurs sites 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\/fr\/blog\/api-wordpress-block-bindings\/","og_locale":"fr_FR","og_type":"article","og_title":"L'API WordPress Block Bindings : Qu'est-ce que c'est et comment l'utiliser pour construire des sites web dynamiques ?","og_description":"Tout ce que vous devez savoir sur l'API WordPress Block Bindings, une puissante API WordPress permettant aux d\u00e9veloppeurs d'int\u00e9grer n'importe quelle source de donn\u00e9es dans leurs sites web.","og_url":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2026-01-09T08:46:08+00:00","article_modified_time":"2026-01-13T08:00:29+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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":"Tout ce que vous devez savoir sur l'API WordPress Block Bindings, une puissante API WordPress permettant aux d\u00e9veloppeurs d'int\u00e9grer n'importe quelle source de donn\u00e9es dans leurs sites web.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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_fr","twitter_misc":{"\u00c9crit par":"Carlo Daniele","Dur\u00e9e de lecture estim\u00e9e":"22 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"L&rsquo;API WordPress Block Bindings : Qu&rsquo;est-ce que c&rsquo;est et comment l&rsquo;utiliser pour construire des sites web dynamiques ?","datePublished":"2026-01-09T08:46:08+00:00","dateModified":"2026-01-13T08:00:29+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/"},"wordCount":3180,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/","url":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/","name":"L'API WordPress Block Bindings : qu'est-ce que c'est et comment l'utiliser ?","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","datePublished":"2026-01-09T08:46:08+00:00","dateModified":"2026-01-13T08:00:29+00:00","description":"Tout ce que vous devez savoir sur l'API WordPress Block Bindings, une puissante API WordPress permettant aux d\u00e9veloppeurs d'int\u00e9grer n'importe quelle source de donn\u00e9es dans leurs sites web.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/api-wordpress-block-bindings\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/01\/the-wordpress-block-bindings-api-what-it-is-and-how-to-use-it-to-build-dynamic-websites.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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\/fr\/blog\/api-wordpress-block-bindings\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"D\u00e9veloppement WordPress","item":"https:\/\/kinsta.com\/fr\/sujets\/developpement-wordpress\/"},{"@type":"ListItem","position":3,"name":"L&#8217;API WordPress Block Bindings : Qu&#8217;est-ce que c&#8217;est et comment l&#8217;utiliser pour construire des sites web dynamiques ?"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","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\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/82055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=82055"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/82055\/revisions"}],"predecessor-version":[{"id":82087,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/82055\/revisions\/82087"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82055\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82055\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82055\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82055\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82055\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82055\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82055\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82055\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82055\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/82056"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=82055"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=82055"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=82055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}