{"id":76506,"date":"2024-03-12T19:08:03","date_gmt":"2024-03-12T18:08:03","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=76506&#038;preview=true&#038;preview_id=76506"},"modified":"2024-03-18T09:53:36","modified_gmt":"2024-03-18T08:53:36","slug":"donnees-dinstallation-dun-plugin-wordpress","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/","title":{"rendered":"Installer les donn\u00e9es de configuration d&rsquo;un plugin WordPress"},"content":{"rendered":"<p>Lors du d\u00e9veloppement d&rsquo;une <a href=\"https:\/\/kinsta.com\/fr\/sujets\/extensions-wordpress\/\">extension WordPress<\/a>, une \u00e9tape cruciale consiste \u00e0 pr\u00e9installer les donn\u00e9es essentielles, afin de garantir le bon fonctionnement de l&rsquo;extension d\u00e8s le d\u00e9part. Prenons l&rsquo;exemple d&rsquo;une extension de gestion d&rsquo;\u00e9v\u00e8nements. Lors de l&rsquo;installation, il est extr\u00eamement utile que l&rsquo;extension g\u00e9n\u00e8re automatiquement une page intitul\u00e9e \u00ab <strong>\u00c9v\u00e8nements \u00e0 venir<\/strong> \u00bb qui affiche une liste des \u00e9v\u00e8nements futurs.<\/p>\n<p>Cette page pr\u00e9configur\u00e9e, incorpor\u00e9e avec un code court comme <code>[event_list number=\"10\" scope=\"future\" status=\"publish\"]<\/code>, permet aux utilisateurs d&rsquo;exploiter imm\u00e9diatement les capacit\u00e9s de l&rsquo;extension sans avoir \u00e0 lire sa documentation.<\/p>\n<p>L&rsquo;installation des donn\u00e9es est utile non seulement lors de la premi\u00e8re installation de l&rsquo;extension, mais aussi lors des mises \u00e0 jour ult\u00e9rieures. Par exemple, si une mise \u00e0 jour introduit une fonction d&rsquo;affichage du calendrier, l&rsquo;extension peut cr\u00e9er automatiquement une nouvelle page, <strong>Calendrier des \u00e9v\u00e8nements<\/strong>, pr\u00e9sentant cet ajout au moyen d&rsquo;un code court tel que <code>[event_calendar status=\"publish\"]<\/code>.<\/p>\n<p>En g\u00e9n\u00e9ral, le champ d&rsquo;application de l&rsquo;installation des donn\u00e9es couvre diff\u00e9rents besoins :<\/p>\n<ul>\n<li>G\u00e9n\u00e9rer de nouvelles pages avec des titres et des contenus sp\u00e9cifiques.<\/li>\n<li>Ajouter des entr\u00e9es pour les types de publication personnalis\u00e9s (CPT) cr\u00e9\u00e9s par l&rsquo;extension.<\/li>\n<li>Ins\u00e9rer des r\u00e9glages par d\u00e9faut dans la table <code>wp_options<\/code><\/li>\n<li>Attribuer de nouvelles capacit\u00e9s aux r\u00f4les des utilisateurs<\/li>\n<li>Assigner des m\u00e9tadonn\u00e9es aux utilisateurs, pour des fonctionnalit\u00e9s nouvelles ou mises \u00e0 jour fournies par l&rsquo;extension (par exemple, les utilisateurs peuvent changer le format de la date de l&rsquo;\u00e9v\u00e8nement, et une valeur par d\u00e9faut est d&rsquo;abord ajout\u00e9e pour tous les utilisateurs)<\/li>\n<li>Cr\u00e9er des cat\u00e9gories couramment utilis\u00e9es dans le contexte de l&rsquo;extension, telles que \u00ab conf\u00e9rences \u00bb ou \u00ab sports \u00bb<\/li>\n<\/ul>\n<p>L&rsquo;installation des donn\u00e9es doit \u00eatre un processus incr\u00e9mental, sinon nous pourrions cr\u00e9er des entr\u00e9es en double.<\/p>\n<p>Par exemple, si la version 1.1 d&rsquo;une extension introduit une page <strong>\u00c9v\u00e8nements \u00e0 venir<\/strong> et qu&rsquo;un utilisateur effectue une mise \u00e0 jour \u00e0 partir de la version 1.0, seules les nouvelles donn\u00e9es relatives \u00e0 la version 1.1 doivent \u00eatre install\u00e9es. Cette mise \u00e0 jour incr\u00e9mentale garantit que, lorsque la version 1.2 sera lanc\u00e9e avec la fonction de calendrier, seule la nouvelle page <strong>Calendrier des \u00e9v\u00e8nements<\/strong> sera ajout\u00e9e, \u00e9vitant ainsi toute duplication de la page <strong>\u00c9v\u00e8nements \u00e0 venir<\/strong>.<\/p>\n<p>Par cons\u00e9quent, lors de la mise \u00e0 jour, l&rsquo;extension doit r\u00e9cup\u00e9rer la version pr\u00e9c\u00e9dente install\u00e9e et installer les donn\u00e9es correspondant uniquement \u00e0 la ou aux nouvelles versions.<\/p>\n<p>Cet article explique comment installer les donn\u00e9es initiales, et continuer \u00e0 ajouter de nouvelles donn\u00e9es lors des mises \u00e0 jour ult\u00e9rieures, dans nos extensions WordPress.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Fournir la version actuelle<\/h2>\n<p>Pour g\u00e9rer le processus incr\u00e9mental, l&rsquo;extension doit suivre sa version actuelle, typiquement d\u00e9clar\u00e9e dans l&rsquo;<a href=\"https:\/\/developer.wordpress.org\/plugins\/plugin-basics\/header-requirements\/#header-fields\" target=\"_blank\" rel=\"noopener noreferrer\">en-t\u00eate du fichier principal de m&rsquo;extension<\/a>. Mais bien s\u00fbr, nous ne pouvons pas y faire r\u00e9f\u00e9rence directement, car elle se trouve \u00e0 l&rsquo;int\u00e9rieur d&rsquo;un commentaire <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-php\/\">PHP<\/a>. Nous d\u00e9finissons donc \u00e9galement cette valeur dans une variable et la fournissons \u00e0 une classe <code>Plugin<\/code> responsable de l&rsquo;initialisation et de la configuration :<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/*\nPlugin Name: My plugin\nVersion: 1.6\n*\/\n\n\/\/ Same version as in the header\n$pluginVersion = '1.6';\nnew Plugin($pluginVersion)-&gt;setup();\n<\/code><\/pre>\n<p>La classe <code>Plugin<\/code>, tirant parti de la <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8\/#constructor-property-promotion\">promotion de la propri\u00e9t\u00e9 Constructor de PHP 8.0<\/a>, stocke cette version, de sorte que nous puissions la r\u00e9f\u00e9rencer plus tard :<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nclass Plugin {\n\n  public function __construct(\n    protected string $pluginVersion,\n  ) {}\n\n  public function setup(): void\n  {\n    \/\/ Initialization logic here...\n  }\n\n  \/\/ ...\n}\n<\/code><\/pre>\n<p>Remarquez que la logique d&rsquo;initialisation et de configuration de l&rsquo;extension est ajout\u00e9e \u00e0 la m\u00e9thode <code>setup<\/code>, et non au constructeur. C&rsquo;est parce que le constructeur doit \u00e9viter de produire des effets de bord ; sinon, nous pourrions produire des bogues lors de l&rsquo;extension ou de la composition de la classe <code>Plugin<\/code>.<\/p>\n<p>Voyons comment cela pourrait se produire. Supposons que nous ajoutions une classe <code>BetterPlugin<\/code> qui compose des fonctionnalit\u00e9s de la classe <code>Plugin<\/code>:<\/p>\n<pre><code class=\"language-php\">class BetterPlugin {\n\n  public function printSomething(): string\n  {\n    $pluginVersion = '1.0';\n    $plugin = new Plugin($pluginVersion);\n    return '&lt;div class=\"wrapper\"&gt;' . $plugin-&gt;printSomething() . '&lt;\/div&gt;';\n  }\n}\n<\/code><\/pre>\n<p>Chaque fois que l&rsquo;on ex\u00e9cute <code>new Plugin()<\/code> \u00e0 l&rsquo;int\u00e9rieur de <code>printSomething<\/code>, une nouvelle instance de <code>Plugin<\/code> est cr\u00e9\u00e9e. Si la logique de configuration \u00e9tait ajout\u00e9e au constructeur, elle serait ex\u00e9cut\u00e9e chaque fois que nous cr\u00e9ons un nouvel objet <code>Plugin<\/code>. Dans notre cas, nous voulons cr\u00e9er la page <strong>\u00c9v\u00e8nements \u00e0 venir<\/strong> une seule fois, et non plusieurs fois. En ajoutant la logique \u00e0 la m\u00e9thode <code>setup<\/code>, nous pouvons \u00e9viter ce probl\u00e8me.<\/p>\n<h2>Suivi de la version pr\u00e9c\u00e9dente<\/h2>\n<p>WordPress ne fournit pas de moyen pratique pour r\u00e9cup\u00e9rer la version de l&rsquo;extension remplac\u00e9e. Nous devons donc stocker cette valeur nous-m\u00eames dans la table <code>wp_options<\/code> de la <a href=\"https:\/\/kinsta.com\/database\/\">base de donn\u00e9es<\/a>.<\/p>\n<p>Enregistrez la version sous l&rsquo;entr\u00e9e <code>\"myplugin_version\"<\/code>, o\u00f9 <code>myplugin_<\/code> est le nom de l&rsquo;extension (par exemple <code>eventsmanager_version<\/code>). Il est important de toujours faire pr\u00e9c\u00e9der tous nos param\u00e8tres de <code>myplugin_<\/code>, afin d&rsquo;\u00e9viter les conflits potentiels, car nous ne pouvons pas \u00eatre surs qu&rsquo;une autre extension n&rsquo;ajoutera pas une option <code>version<\/code>.<\/p>\n<p>Lors du chargement de l&rsquo;extension \u00e0 chaque requ\u00eate, <code>Plugin<\/code> connaitra d\u00e9j\u00e0 la version actuelle (\u00e0 partir de la propri\u00e9t\u00e9 <code>$pluginVersion<\/code>) et r\u00e9cup\u00e8rera la derni\u00e8re version stock\u00e9e dans la base de donn\u00e9es. Cette comparaison d\u00e9termine l&rsquo;\u00e9tat de l&rsquo;extension :<\/p>\n<ul>\n<li><strong>Nouvelle installation :<\/strong> d\u00e9tecte si la base de donn\u00e9es ne contient pas d&rsquo;entr\u00e9e de version pour l&rsquo;extension, ce qui indique une premi\u00e8re installation (par exemple, <code>$storedPluginVersion<\/code> est <code>null<\/code>)<\/li>\n<li><strong>Mise \u00e0 jour :<\/strong> identifi\u00e9e lorsque la version actuelle d\u00e9passe la version stock\u00e9e dans la base de donn\u00e9es, ce qui indique la n\u00e9cessit\u00e9 d&rsquo;une mise \u00e0 jour.<\/li>\n<li>Sinon, il n&rsquo;y a pas de changement<\/li>\n<\/ul>\n<p>Chaque fois qu&rsquo;il y a un changement, nous appelons <code>prepareAndInstallPluginSetupData<\/code> pour qu&rsquo;il installe les donn\u00e9es appropri\u00e9es, qu&rsquo;il s&rsquo;agisse d&rsquo;une nouvelle installation (auquel cas il doit installer toutes les donn\u00e9es pour toutes les versions) ou d&rsquo;une mise \u00e0 jour (installer les donn\u00e9es uniquement pour toutes les nouvelles versions). La variable nullable <code>$previousVersion<\/code> indique de quelle situation il s&rsquo;agit (<code>$previousVersion<\/code> est <code>null<\/code> =&gt; nouvelle installation).<\/p>\n<p>Apr\u00e8s avoir appel\u00e9 cette m\u00e9thode, nous devons \u00e9galement stocker la version actuelle de l&rsquo;extension dans la base de donn\u00e9es, devenant ainsi la nouvelle version \u00ab last stored \u00bb. Cela doit \u00eatre fait apr\u00e8s l&rsquo;appel \u00e0 <code>prepareAndInstallPluginSetupData<\/code>, de sorte que si cette m\u00e9thode produit une erreur (par exemple, en lan\u00e7ant un <code>RuntimeException<\/code>) et que les donn\u00e9es ne sont pas install\u00e9es, la version pr\u00e9c\u00e9dente est toujours stock\u00e9e dans la base de donn\u00e9es, et un nouveau cycle d&rsquo;installation des donn\u00e9es sera tent\u00e9 lors de la prochaine requ\u00eate.<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nclass Plugin {\n\n  \/\/ ...\n\n  public function setup(): void\n  {\n    if (!is_admin()) {\n      return;\n    }\n\n    $this-&gt;managePluginDataVersioning();\n  }\n\n  \/**\n   * If the plugin has just been newly-installed + activated\n   * or updated, install the appropriate data.\n   *\/\n  protected function managePluginDataVersioning(): void\n  {\n    $myPluginVersionOptionName = 'myplugin_version';\n    $storedPluginVersion = get_option($myPluginVersionOptionName, null);\n\n    \/\/ Check if the main plugin has been activated or updated\n    $isPluginJustFirstTimeActivated = $storedPluginVersion === null;\n    $isPluginJustUpdated = !$isPluginJustFirstTimeActivated && $storedPluginVersion !== $this-&gt;pluginVersion;\n\n    \/\/ If there were no changes, nothing to do\n    if (!$isPluginJustFirstTimeActivated && !$isPluginJustUpdated) {\n      return;\n    }\n\n    \\add_action(\n      'init',\n      function () use ($myPluginVersionOptionName, $storedPluginVersion): void {\n        $this-&gt;prepareAndInstallPluginSetupData($storedPluginVersion);\n\n        \/\/ Update on the DB\n        update_option($myPluginVersionOptionName, $this-&gt;pluginVersion);\n      }\n    );\n  }\n\n  protected function prepareAndInstallPluginSetupData(?string $previousVersion): void\n  {\n    \/\/ Installation logic...\n  }\n}\n<\/code><\/pre>\n<p>Notez que <code>prepareAndInstallPluginSetupData<\/code> (et la mise \u00e0 jour ult\u00e9rieure de la base de donn\u00e9es) est ex\u00e9cut\u00e9 sur le <a href=\"https:\/\/kinsta.com\/fr\/blog\/hooks-wordpress\/\">crochet d&rsquo;action <code>init<\/code><\/a>. Cela permet de s&rsquo;assurer que toutes les donn\u00e9es du CMS sont pr\u00eates \u00e0 \u00eatre r\u00e9cup\u00e9r\u00e9es et manipul\u00e9es.<\/p>\n<p>En particulier, les <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-qu-une-taxonomie\/\">taxonomies<\/a> (\u00e9tiquettes et cat\u00e9gories) <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_taxonomy\/#description\" target=\"_blank\" rel=\"noopener noreferrer\">ne sont pas accessibles avant le crochet <code>init<\/code><\/a>. Si le processus d&rsquo;installation de l&rsquo;extension devait cr\u00e9er une entr\u00e9e CPT et lui attribuer une cat\u00e9gorie personnalis\u00e9e, ce processus ne pourrait \u00eatre ex\u00e9cut\u00e9 qu&rsquo;\u00e0 partir du crochet <code>init<\/code>.<\/p>\n<p>Acc\u00e9der \u00e0 la derni\u00e8re version stock\u00e9e dans la base de donn\u00e9es \u00e0 chaque requ\u00eate n&rsquo;est pas id\u00e9al du <a href=\"https:\/\/kinsta.com\/fr\/blog\/optimisation-base-de-donnees-wordpress-kinsta\/\">point de vue des performances<\/a>. Pour am\u00e9liorer cela, combinez toutes les options n\u00e9cessaires \u00e0 l&rsquo;extension dans un tableau, stockez-les dans une seule entr\u00e9e, puis acc\u00e9dez-y avec un seul appel \u00e0 la base de donn\u00e9es.<\/p>\n<p>Par exemple, si l&rsquo;extension a \u00e9galement besoin de stocker une option <code>myplugin_date_format<\/code> pour afficher la date de l&rsquo;\u00e9v\u00e8nement, nous pouvons cr\u00e9er une entr\u00e9e unique <code>myplugin_options<\/code> avec les propri\u00e9t\u00e9s <code>version<\/code> et <code>date_format<\/code>.<\/p>\n<p>Pour acc\u00e9der \u00e0 la derni\u00e8re version stock\u00e9e, le code PHP doit \u00eatre adapt\u00e9 comme suit :<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nclass Plugin {\n\n  \/\/ ...\n\n  protected function managePluginDataVersioning(): void\n  {\n    $myPluginOptionsOptionName = 'myplugin_options';\n    $myPluginOptions = get_option($myPluginOptionsOptionName, []);\n    $storedPluginVersion = $myPluginOptions['version'] ?? null;\n\n    \/\/ ...\n\n    \\add_action(\n      'init',\n      function () use ($myPluginOptionsOptionName, $myPluginOptions): void {\n        \/\/ ...\n\n        \/\/ Update on the DB\n        $myPluginOptions['version'] = $this-&gt;pluginVersion;\n        update_option($myPluginOptionsOptionName, $myPluginOptions);\n      }\n    );\n  }\n}\n<\/code><\/pre>\n<h2>\u00c9viter les requ\u00eates concurrentes d&rsquo;installation de donn\u00e9es dupliqu\u00e9es<\/h2>\n<p>Il est possible que le processus d&rsquo;installation soit d\u00e9clench\u00e9 plus d&rsquo;une fois si deux utilisateurs ou plus acc\u00e8dent au <a href=\"https:\/\/kinsta.com\/fr\/blog\/tableau-de-bord-admin-wordpress\/\">wp-admin<\/a> exactement au m\u00eame moment. Pour \u00e9viter que les m\u00eames donn\u00e9es soient install\u00e9es deux fois ou plus, nous utilisons un <a href=\"https:\/\/developer.wordpress.org\/apis\/transients\/\" target=\"_blank\" rel=\"noopener noreferrer\">transient<\/a> comme drapeau pour n&rsquo;autoriser que la premi\u00e8re demande d&rsquo;installation des donn\u00e9es :<\/p>\n<ul>\n<li>V\u00e9rifiez si le transient <code>myplugin_installing_plugin_setup_data<\/code> existe (une fois de plus, ce nom doit \u00eatre pr\u00e9c\u00e9d\u00e9 de <code>myplugin_<\/code>) ; si c&rsquo;est le cas, ne faites rien (car un autre processus est en train d&rsquo;installer les donn\u00e9es)<\/li>\n<li>Dans le cas contraire, stockez le transient dans la base de donn\u00e9es pendant une dur\u00e9e maximale raisonnable pour l&rsquo;installation des donn\u00e9es (par exemple, 30 secondes)<\/li>\n<li>Installez les donn\u00e9es<\/li>\n<li>Supprimez le transient<\/li>\n<\/ul>\n<p>Voici le code :<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nclass Plugin {\n\n  \/\/ ...\n\n  \/**\n   * Use a transient to make sure that only one instance\n   * will install the data. Otherwise, two requests\n   * happening simultaneously might execute the logic\n   *\/\n  protected function prepareAndInstallPluginSetupData(?string $previousVersion): void\n  {\n    $transientName = 'myplugin_installing_plugin_setup_data';\n    $transient = \\get_transient($transientName);\n    if ($transient !== false) {\n      \/\/ Another instance is executing this code right now\n      return;\n    }\n\n    \\set_transient($transientName, true, 30);\n    $this-&gt;installPluginSetupData($previousVersion);\n    \\delete_transient($transientName);\n  }\n\n  protected function installPluginSetupData(?string $previousVersion): void\n  {\n    \/\/ Do something...\n  }\n}\n<\/code><\/pre>\n<h2>Installation des donn\u00e9es pour toutes les versions<\/h2>\n<p>Comme nous l&rsquo;avons mentionn\u00e9 pr\u00e9c\u00e9demment, si nous mettons \u00e0 jour l&rsquo;extension, nous ne devons installer que les donn\u00e9es des nouvelles versions, et non pas toutes les versions. Cela signifie que nous devons g\u00e9rer les donn\u00e9es \u00e0 installer version par version.<\/p>\n<p>Dans le code ci-dessous, le tableau <code>$versionCallbacks<\/code> indique la fonction \u00e0 ex\u00e9cuter pour chaque version, la fonction ex\u00e9cutant la logique d&rsquo;installation des donn\u00e9es. Nous it\u00e9rons la liste de toutes les versions, comparons chacune d&rsquo;elles \u00e0 la version pr\u00e9c\u00e9dente \u00e0 l&rsquo;aide de <code>version_compare<\/code> et, si elle est sup\u00e9rieure, ex\u00e9cutons la fonction correspondante pour installer les donn\u00e9es correspondantes.<\/p>\n<p>Notez que si <code>$previousVersion<\/code> est <code>null<\/code> (c&rsquo;est-\u00e0-dire qu&rsquo;il s&rsquo;agit d&rsquo;une nouvelle installation), toutes les fonctions sont ex\u00e9cut\u00e9es.<\/p>\n<pre><code class=\"language-php\">class Plugin {\n  \/**\n   * Provide the installation in stages, version by version, to\n   * be able to execute it both when installing\/activating the plugin,\n   * or updating it to a new version with setup data.\n   *\n   * The plugin's setup data will be installed if:\n   *\n   * - $previousVersion = null =&gt; Activating the plugin for first time\n   * - $previousVersion &lt; someVersion =&gt; Updating to a new version that has data to install\n   *\/\n  protected function installPluginSetupData(?string $previousVersion): void\n  {\n    $versionCallbacks = [\n      '1.1' =&gt; $this-&gt;installPluginSetupDataForVersion1Dot1(...),\n      '1.2' =&gt; $this-&gt;installPluginSetupDataForVersion1Dot2(...),\n      \/\/ ... Add more versions\n    ];\n    foreach ($versionCallbacks as $version =&gt; $callback) {\n      \/**\n       * If the previous version is provided, check if the corresponding update\n       * has already been performed, then skip\n       *\/\n      if ($previousVersion !== null && version_compare($previousVersion, $version, '&gt;=')) {\n        continue;\n      }\n      $callback();\n    }\n  }\n\n  protected function installPluginSetupDataForVersion1Dot1(): void\n  {\n    \/\/ Do something...\n  }\n\n  protected function installPluginSetupDataForVersion1Dot2(): void\n  {\n    \/\/ Do something...\n  }\n}\n<\/code><\/pre>\n<h2>Installation des donn\u00e9es pour chaque version sp\u00e9cifique<\/h2>\n<p>Enfin, nous devons installer les donn\u00e9es r\u00e9elles (cr\u00e9er une page, une entr\u00e9e CPT, ajouter une option, etc) pour chaque version.<\/p>\n<p>Dans ce code, nous ajoutons la page <strong>\u00c9v\u00e8nements \u00e0 venir<\/strong> pour l&rsquo;extension de gestion des \u00e9v\u00e8nements, pour <code>v1.1<\/code>:<\/p>\n<pre><code class=\"language-php\">class Plugin {\n  \n  \/\/ ...\n\n  protected function installPluginSetupDataForVersion1Dot1(): void\n  {\n    \\wp_insert_post([\n      'post_status' =&gt; 'publish',\n      'post_type' =&gt; 'page',\n      'post_title' =&gt; \\__('Upcoming Events', 'myplugin'),\n      'post_content' =&gt; '[event_list number=\"10\" scope=\"future\"]',\n    ]);\n  }\n\n  \/\/ ...\n}\n<\/code><\/pre>\n<p>Ensuite, nous cr\u00e9ons la page <strong>Events Calendar<\/strong> pour <code>v1.2<\/code> (dans ce cas, en utilisant les <a href=\"https:\/\/kinsta.com\/fr\/blog\/blocs-gutenberg\/\">blocs Gutenberg<\/a> sur la page, en ajoutant un bloc personnalis\u00e9 appel\u00e9 <code>event-calendar<\/code>) :<\/p>\n<pre><code class=\"language-php\">class Plugin {\n  \n  \/\/ ...\n\n  protected function installPluginSetupDataForVersion1Dot2(): void\n  {\n    \\wp_insert_post([\n      'post_status' =&gt; 'publish',\n      'post_type' =&gt; 'page',\n      'post_title' =&gt; \\__('Events Calendar', 'myplugin'),\n      'post_content' =&gt; serialize_blocks([\n        [\n          'blockName' =&gt; 'myplugin\/event-calendar',\n          'attrs' =&gt; [\n            'status' =&gt; 'publish',\n          ],\n          'innerContent' =&gt; [],\n        ],\n      ]),\n    ]);\n  }\n}\n<\/code><\/pre>\n<h2>Tout le code ensemble<\/h2>\n<p>Nous avons termin\u00e9 ! L&rsquo;<a href=\"https:\/\/github.com\/GatoGraphQL\/GatoGraphQL\/blob\/9af936db31ac95456502fdd805a4b5658340e3ea\/layers\/GatoGraphQLForWP\/plugins\/gatographql\/src\/Plugin.php#L255\" target=\"_blank\" rel=\"noopener noreferrer\">ensemble du code PHP pour la classe <code>Plugin<\/code><\/a>, contenant la logique pour suivre la version de l&rsquo;extension et installer les donn\u00e9es appropri\u00e9es, est le suivant :<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nclass Plugin {\n\n  public function __construct(\n    protected string $pluginVersion,\n  ) {\n  }\n\n  public function setup(): void\n  {\n    if (!is_admin()) {\n      return;\n    }\n\n    $this-&gt;managePluginDataVersioning();\n  }\n\n  \/**\n   * If the plugin has just been newly-installed + activated\n   * or updated, install the appropriate data.\n   *\/\n  protected function managePluginDataVersioning(): void\n  {\n    $myPluginVersionOptionName = 'myplugin_version';\n    $storedPluginVersion = get_option($myPluginVersionOptionName, null);\n\n    \/\/ Check if the main plugin has been activated or updated\n    $isPluginJustFirstTimeActivated = $storedPluginVersion === null;\n    $isPluginJustUpdated = !$isPluginJustFirstTimeActivated && $storedPluginVersion !== $this-&gt;pluginVersion;\n\n    \/\/ If there were no changes, nothing to do\n    if (!$isPluginJustFirstTimeActivated && !$isPluginJustUpdated) {\n      return;\n    }\n\n    \\add_action(\n      'init',\n      function () use ($myPluginVersionOptionName, $storedPluginVersion): void {\n        $this-&gt;prepareAndInstallPluginSetupData($storedPluginVersion);\n\n        \/\/ Update on the DB\n        update_option($myPluginVersionOptionName, $this-&gt;pluginVersion);\n      }\n    );\n  }\n\n  \/**\n   * Use a transient to make sure that only one instance\n   * will install the data. Otherwise, two requests\n   * happening simultaneously might both execute\n   * this logic\n   *\/\n  protected function prepareAndInstallPluginSetupData(?string $previousVersion): void\n  {\n    $transientName = 'myplugin_installing_plugin_setup_data';\n    $transient = \\get_transient($transientName);\n    if ($transient !== false) {\n      \/\/ Another instance is executing this code right now\n      return;\n    }\n\n    \\set_transient($transientName, true, 30);\n    $this-&gt;installPluginSetupData($previousVersion);\n    \\delete_transient($transientName);\n  }\n\n  \/**\n   * Provide the installation in stages, version by version, to\n   * be able to execute it both when installing\/activating the plugin,\n   * or updating it to a new version with setup data.\n   *\n   * The plugin's setup data will be installed if:\n   *\n   * - $previousVersion = null =&gt; Activating the plugin for first time\n   * - $previousVersion &lt; someVersion =&gt; Updating to a new version that has data to install\n   *\/\n  protected function installPluginSetupData(?string $previousVersion): void\n  {\n    $versionCallbacks = [\n      '1.1' =&gt; $this-&gt;installPluginSetupDataForVersion1Dot1(...),\n      '1.2' =&gt; $this-&gt;installPluginSetupDataForVersion1Dot2(...),\n      \/\/ ... Add more versions\n    ];\n    foreach ($versionCallbacks as $version =&gt; $callback) {\n      \/**\n       * If the previous version is provided, check if the corresponding update\n       * has already been performed, then skip\n       *\/\n      if ($previousVersion !== null && version_compare($previousVersion, $version, '&gt;=')) {\n        continue;\n      }\n      $callback();\n    }\n  }\n\n  protected function installPluginSetupDataForVersion1Dot1(): void\n  {\n    \\wp_insert_post([\n      'post_status' =&gt; 'publish',\n      'post_type' =&gt; 'page',\n      'post_title' =&gt; \\__('Upcoming Events', 'myplugin'),\n      'post_content' =&gt; '[event_list number=\"10\" scope=\"future\" status=\"publish\"]',\n    ]);\n  }\n\n  protected function installPluginSetupDataForVersion1Dot2(): void\n  {\n    \\wp_insert_post([\n      'post_status' =&gt; 'publish',\n      'post_type' =&gt; 'page',\n      'post_title' =&gt; \\__('Events Calendar', 'myplugin'),\n      'post_content' =&gt; serialize_blocks([\n        [\n          'blockName' =&gt; 'myplugin\/event-calendar',\n          'attrs' =&gt; [\n            'status' =&gt; 'publish',\n          ],\n          'innerContent' =&gt; [],\n        ],\n      ]),\n    ]);\n  }\n}\n<\/code><\/pre>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Les extensions WordPress ont souvent besoin d&rsquo;installer des donn\u00e9es lors de l&rsquo;installation. En outre, comme les nouvelles versions de l&rsquo;extension fournissent de nouvelles fonctionnalit\u00e9s, l&rsquo;extension peut \u00e9galement avoir besoin d&rsquo;installer des donn\u00e9es lorsqu&rsquo;elle est mise \u00e0 jour.<\/p>\n<p>Dans cet article, nous avons appris comment suivre les versions et installer les donn\u00e9es appropri\u00e9es pour nos extensions.<\/p>\n<p><em>Vous avez une extension WordPress qui pourrait b\u00e9n\u00e9ficier de l&rsquo;installation de donn\u00e9es ? Faites-le nous savoir dans les commentaires.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lors du d\u00e9veloppement d&rsquo;une extension WordPress, une \u00e9tape cruciale consiste \u00e0 pr\u00e9installer les donn\u00e9es essentielles, afin de garantir le bon fonctionnement de l&rsquo;extension d\u00e8s le d\u00e9part. &#8230;<\/p>\n","protected":false},"author":196,"featured_media":76507,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1035,999],"class_list":["post-76506","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-extensions-wordpress","topic-fonction-php"],"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>Installation des donn\u00e9es de configuration d&#039;un plugin WordPress - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Ce guide explique comment installer les donn\u00e9es initiales, et continuer \u00e0 ajouter de nouvelles donn\u00e9es avec les mises \u00e0 jour ult\u00e9rieures, dans nos plugins WordPress.\" \/>\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\/donnees-dinstallation-dun-plugin-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Installer les donn\u00e9es de configuration d&#039;un plugin WordPress\" \/>\n<meta property=\"og:description\" content=\"Ce guide explique comment installer les donn\u00e9es initiales, et continuer \u00e0 ajouter de nouvelles donn\u00e9es avec les mises \u00e0 jour ult\u00e9rieures, dans nos plugins WordPress.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/\" \/>\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=\"2024-03-12T18:08:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-18T08:53:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Leonardo Losoviz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Ce guide explique comment installer les donn\u00e9es initiales, et continuer \u00e0 ajouter de nouvelles donn\u00e9es avec les mises \u00e0 jour ult\u00e9rieures, dans nos plugins WordPress.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@losoviz\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Leonardo Losoviz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/\"},\"author\":{\"name\":\"Leonardo Losoviz\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238\"},\"headline\":\"Installer les donn\u00e9es de configuration d&rsquo;un plugin WordPress\",\"datePublished\":\"2024-03-12T18:08:03+00:00\",\"dateModified\":\"2024-03-18T08:53:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/\"},\"wordCount\":1802,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/\",\"name\":\"Installation des donn\u00e9es de configuration d'un plugin WordPress - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg\",\"datePublished\":\"2024-03-12T18:08:03+00:00\",\"dateModified\":\"2024-03-18T08:53:36+00:00\",\"description\":\"Ce guide explique comment installer les donn\u00e9es initiales, et continuer \u00e0 ajouter de nouvelles donn\u00e9es avec les mises \u00e0 jour ult\u00e9rieures, dans nos plugins WordPress.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extensions WordPress\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/extensions-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Installer les donn\u00e9es de configuration d&rsquo;un plugin WordPress\"}]},{\"@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\/c382de1885cc21b079ec1e71d7faf238\",\"name\":\"Leonardo Losoviz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g\",\"caption\":\"Leonardo Losoviz\"},\"description\":\"Leo writes about innovative web development trends, mostly concerning PHP, WordPress and GraphQL. You can find him at leoloso.com and twitter.com\/losoviz.\",\"sameAs\":[\"https:\/\/leoloso.com\",\"https:\/\/x.com\/losoviz\",\"https:\/\/www.youtube.com\/@GatoGraphQL\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/leonardolosoviz\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Installation des donn\u00e9es de configuration d'un plugin WordPress - Kinsta\u00ae","description":"Ce guide explique comment installer les donn\u00e9es initiales, et continuer \u00e0 ajouter de nouvelles donn\u00e9es avec les mises \u00e0 jour ult\u00e9rieures, dans nos plugins WordPress.","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\/donnees-dinstallation-dun-plugin-wordpress\/","og_locale":"fr_FR","og_type":"article","og_title":"Installer les donn\u00e9es de configuration d'un plugin WordPress","og_description":"Ce guide explique comment installer les donn\u00e9es initiales, et continuer \u00e0 ajouter de nouvelles donn\u00e9es avec les mises \u00e0 jour ult\u00e9rieures, dans nos plugins WordPress.","og_url":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2024-03-12T18:08:03+00:00","article_modified_time":"2024-03-18T08:53:36+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg","type":"image\/jpeg"}],"author":"Leonardo Losoviz","twitter_card":"summary_large_image","twitter_description":"Ce guide explique comment installer les donn\u00e9es initiales, et continuer \u00e0 ajouter de nouvelles donn\u00e9es avec les mises \u00e0 jour ult\u00e9rieures, dans nos plugins WordPress.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg","twitter_creator":"@losoviz","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Leonardo Losoviz","Dur\u00e9e de lecture estim\u00e9e":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/"},"author":{"name":"Leonardo Losoviz","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238"},"headline":"Installer les donn\u00e9es de configuration d&rsquo;un plugin WordPress","datePublished":"2024-03-12T18:08:03+00:00","dateModified":"2024-03-18T08:53:36+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/"},"wordCount":1802,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/","url":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/","name":"Installation des donn\u00e9es de configuration d'un plugin WordPress - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg","datePublished":"2024-03-12T18:08:03+00:00","dateModified":"2024-03-18T08:53:36+00:00","description":"Ce guide explique comment installer les donn\u00e9es initiales, et continuer \u00e0 ajouter de nouvelles donn\u00e9es avec les mises \u00e0 jour ult\u00e9rieures, dans nos plugins WordPress.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/wp-installing-setup-data-for-a-wordpress-plugin.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/donnees-dinstallation-dun-plugin-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Extensions WordPress","item":"https:\/\/kinsta.com\/fr\/sujets\/extensions-wordpress\/"},{"@type":"ListItem","position":3,"name":"Installer les donn\u00e9es de configuration d&rsquo;un plugin WordPress"}]},{"@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\/c382de1885cc21b079ec1e71d7faf238","name":"Leonardo Losoviz","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g","caption":"Leonardo Losoviz"},"description":"Leo writes about innovative web development trends, mostly concerning PHP, WordPress and GraphQL. You can find him at leoloso.com and twitter.com\/losoviz.","sameAs":["https:\/\/leoloso.com","https:\/\/x.com\/losoviz","https:\/\/www.youtube.com\/@GatoGraphQL"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/leonardolosoviz\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/76506","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\/196"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=76506"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/76506\/revisions"}],"predecessor-version":[{"id":76562,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/76506\/revisions\/76562"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76506\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76506\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76506\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76506\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76506\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76506\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76506\/translations\/nl"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76506\/translations\/jp"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76506\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/76507"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=76506"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=76506"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=76506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}