{"id":82589,"date":"2026-02-25T10:53:33","date_gmt":"2026-02-25T09:53:33","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=82589&#038;preview=true&#038;preview_id=82589"},"modified":"2026-02-27T10:38:18","modified_gmt":"2026-02-27T09:38:18","slug":"commandes-wp-cli-personnalisees-acorn","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/","title":{"rendered":"Comment cr\u00e9er des commandes WP-CLI personnalis\u00e9es et automatiser la maintenance de WordPress avec Acorn"},"content":{"rendered":"<p>Vous avez probablement des scripts PHP qui effectuent diverses t\u00e2ches, telles que le nettoyage des m\u00e9tadonn\u00e9es de messages orphelins ou la suppression des messages transitoires expir\u00e9s. Au fil du temps, cette collection s&rsquo;agrandit et vit dans un fichier de th\u00e8me, un dossier d&rsquo;extension ou un r\u00e9pertoire cach\u00e9. Acorn vous aide \u00e0 ma\u00eetriser cette d\u00e9sorganisation en apportant la console Artisan de Laravel \u00e0 WordPress.<\/p>\n<p>Cela signifie que vous pouvez cr\u00e9er des commandes WP-CLI personnalis\u00e9es avec des fichiers de classe structur\u00e9s qui centralisent votre logique de maintenance. Ces commandes s&rsquo;ex\u00e9cutent de mani\u00e8re coh\u00e9rente dans le d\u00e9veloppement, le staging et la production en utilisant des indicateurs de progression, des tableaux format\u00e9s, une gestion appropri\u00e9e des erreurs, et bien plus encore. Vous pouvez ensuite les d\u00e9clencher via SSH, les planifier avec des t\u00e2ches cron, ou les ex\u00e9cuter pendant les d\u00e9ploiements.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Comment installer Acorn et ex\u00e9cuter les commandes<\/h2>\n<p>La premi\u00e8re \u00e9tape consiste \u00e0 installer les d\u00e9pendances dont vous avez besoin. Acorn a besoin de <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8-2\/\">PHP 8.2<\/a> ou plus, <a href=\"https:\/\/kinsta.com\/fr\/blog\/installer-composer\/\">Composer<\/a> pour g\u00e9rer les d\u00e9pendances, et <a href=\"https:\/\/kinsta.com\/fr\/blog\/wp-cli\/\">WP-CLI<\/a> sur votre serveur. Kinsta inclut WP-CLI dans tous les plans d&rsquo;h\u00e9bergement, vous pouvez donc commencer \u00e0 cr\u00e9er des commandes imm\u00e9diatement.<\/p>\n<p>Vous installez Acorn via Composer en utilisant <code>composer require roots\/acorn<\/code> dans la racine du projet. Ensuite, ajoutez le code de d\u00e9marrage au fichier <code>functions.php<\/code> de votre th\u00e8me ou au fichier principal de votre extension :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nuse RootsAcornApplication;\nif (! class_exists(RootsAcornApplication::class)) {\n    wp_die(\n        __('You need to install Acorn to use this site.', 'domain'),\n        '',\n        [\n            'link_url' =&gt; 'https:\/\/roots.io\/acorn\/docs\/installation\/',\n            'link_text' =&gt; __('Acorn Docs: Installation', 'domain'),\n        ]\n    );\n}\n\nadd_action('after_setup_theme', function () {\n    Application::configure()\n        -&gt;withProviders([\n            AppProvidersThemeServiceProvider::class,\n        ])\n        -&gt;boot();\n}, 0);\n<\/code><\/pre>\n<p>La configuration z\u00e9ro stocke le cache de l&rsquo;application et les journaux dans le <a href=\"https:\/\/kinsta.com\/fr\/blog\/cache-wordpress\/\">r\u00e9pertoire de cache de WordPress<\/a> \u00e0 <code>[wp-content]\/cache\/acorn\/<\/code>, avec vos commandes dans le r\u00e9pertoire <code>app\/<\/code> du th\u00e8me.<\/p>\n<p>La structure traditionnelle suit les conventions de Laravel, comme les r\u00e9pertoires d\u00e9di\u00e9s pour <code>app\/<\/code>, <code>config\/<\/code>, <code>storage\/<\/code>, et <code>resources\/<\/code> \u00e0 la racine de votre projet. Vous mettez cela en place avec une ligne :<\/p>\n<pre><code class=\"language-bash\">wp acorn acorn:init storage && wp acorn vendor:publish --tag=acorn\n<\/code><\/pre>\n<p>Si vous ex\u00e9cutez <code>wp acorn list<\/code>, vous v\u00e9rifiez votre installation en affichant toutes les commandes Acorn disponibles. \u00c0 partir de l\u00e0, toutes les commandes personnalis\u00e9es que vous cr\u00e9ez sont stock\u00e9es dans le r\u00e9pertoire <code>app\/Console\/Commands\/<\/code>. Acorn d\u00e9couvre automatiquement toutes les classes de commandes dans ce r\u00e9pertoire et les enregistre avec WP-CLI.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Vous vous connectez \u00e0 votre serveur via SSH, puis vous lancez <code>wp acorn<\/code> suivi du nom de votre commande. Pour les clients Kinsta, les <a href=\"https:\/\/kinsta.com\/help\/connect-to-ssh\/\">d\u00e9tails de la connexion SSH<\/a> se trouvent dans votre tableau de bord MyKinsta.<\/p>\n<\/aside>\n\n<h2>Cr\u00e9ation de votre premi\u00e8re commande Artisan<\/h2>\n<p>La commande Artisan <code>wp acorn make:command CleanupCommand<\/code> g\u00e9n\u00e8re votre fichier avec la structure dont vous avez besoin. Il contient trois \u00e9l\u00e9ments cl\u00e9s dont chaque commande Artisan a besoin :<\/p>\n<ul>\n<li>Une propri\u00e9t\u00e9 <code>$signature<\/code> qui d\u00e9finit le nom et les options de votre commande.<\/li>\n<li>La propri\u00e9t\u00e9 <code>$description<\/code> pour le texte d&rsquo;aide.<\/li>\n<li>Une m\u00e9thode <code>handle()<\/code> o\u00f9 se trouve la logique de votre commande.<\/li>\n<\/ul>\n<p>Dans ce cas, elle construit <code>app\/Console\/Commands\/CleanupCommand.php<\/code> avec une structure de commande de base :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace AppConsoleCommands;\nuse IlluminateConsoleCommand;\nclass CleanupCommand extends Command\n{\n    protected $signature = 'app:cleanup';\n    protected $description = 'Command description';\n    public function handle()\n    {\n        \/\/\n    }\n}\n<\/code><\/pre>\n<p>La propri\u00e9t\u00e9 <code>$signature<\/code> utilise une syntaxe sp\u00e9cifique :<\/p>\n<ul>\n<li>Une commande de base n&rsquo;a besoin que d&rsquo;un nom, comme <code>cleanup:run<\/code>.<\/li>\n<li>Vous ajoutez les arguments obligatoires en les pla\u00e7ant entre accolades (<code>cleanup:run {days}<\/code>, par exemple).<\/li>\n<li>Les arguments facultatifs sont accompagn\u00e9s d&rsquo;un point d&rsquo;interrogation : <code>cleanup:run {days?}<\/code>.<\/li>\n<li>Les options utilisent des doubles tirets : <code>cleanup:run {--force} {--limit=100}<\/code>.<\/li>\n<\/ul>\n<p>Ensuite, incluez une description de la commande et votre logique de base :<\/p>\n<pre><code class=\"language-php\">protected $signature = 'cleanup:test {--dry-run : Preview changes without executing}';\nprotected $description = 'Test cleanup command';\npublic function handle()\n{\n    $dryRun = $this-&gt;option('dry-run');\n\n    if ($dryRun) {\n        $this-&gt;components-&gt;info('Running in dry-run mode');\n    }\n\n    $this-&gt;components-&gt;info('Cleanup command executed');\n\n    return 0;\n}\n<\/code><\/pre>\n<p>Vous pouvez tester ceci en utilisant <code>wp acorn cleanup:test --dry-run<\/code>. La commande produit des messages format\u00e9s \u00e0 l&rsquo;aide du syst\u00e8me de composants Artisan. La m\u00e9thode <code>$this-&gt;components-&gt;info()<\/code> affiche les messages de r\u00e9ussite en vert. Vous pouvez \u00e9galement utiliser <code>$this-&gt;components-&gt;error()<\/code> pour les erreurs, <code>$this-&gt;components-&gt;warn()<\/code> pour les avertissements et <code>$this-&gt;line()<\/code> pour le texte brut.<\/p>\n<h2>Comment cr\u00e9er 3 commandes de maintenance pratiques<\/h2>\n<p>Voici quelques exemples qui vous aideront \u00e0 faire face aux t\u00e2ches de maintenance de la base de donn\u00e9es qui se pr\u00e9sentent pour de nombreux sites WordPress.<\/p>\n<p>Bien que chaque commande inclue la gestion des erreurs et suive largement les standards de codage de WordPress pour garder vos donn\u00e9es en s\u00e9curit\u00e9, vous devriez toujours les utiliser comme un squelette pour vos propres projets plut\u00f4t que de simplement les copier-coller.<\/p>\n<h3>1. Nettoyer les m\u00e9tadonn\u00e9es des articles orphelins<\/h3>\n<p>Les <a href=\"https:\/\/kinsta.com\/fr\/blog\/derniere-mise-a-jour\/\">m\u00e9tadonn\u00e9es<\/a> des articles restent pr\u00e9sentes apr\u00e8s que vous ayez supprim\u00e9 des articles. Cela se produit lorsque les extensions contournent les crochets de suppression de WordPress et laissent des entr\u00e9es de m\u00e9tadonn\u00e9es pointant vers des articles qui n&rsquo;existent plus. Au fil du temps, ces m\u00e9tadonn\u00e9es ralentissent les requ\u00eates de votre base de donn\u00e9es.<\/p>\n<p>Une fois que vous avez cr\u00e9\u00e9 la commande avec <code>wp acorn make:command CleanupOrphanedMeta<\/code>, vous pouvez commencer avec la structure de la classe de commande et la signature :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace AppConsoleCommands;\nuse IlluminateConsoleCommand;\nclass CleanupOrphanedMeta extends Command\n{\n    protected $signature = 'maintenance:cleanup-orphaned-meta \n                            {--dry-run : Preview orphans without deleting}';\n    \n    protected $description = 'Remove orphaned post metadata from wp_postmeta';\n    public function handle()\n    {\n        global $wpdb;\n\n        $dryRun = $this-&gt;option('dry-run');\n\n        $this-&gt;components-&gt;info('Scanning for orphaned post metadata...');\n<\/code><\/pre>\n<p>La commande utilise une requ\u00eate <code>LEFT JOIN<\/code> pour trouver ces enregistrements orphelins. Le mod\u00e8le v\u00e9rifie les valeurs <code>NULL<\/code> dans la table posts. Si la jointure renvoie <code>NULL<\/code>, les m\u00e9tadonn\u00e9es appartiennent \u00e0 un article supprim\u00e9 :<\/p>\n<pre><code class=\"language-php\">        \/\/ Find orphaned metadata\n        $orphans = $wpdb-&gt;get_results(\"\n            SELECT pm.meta_id, pm.post_id, pm.meta_key \n            FROM {$wpdb-&gt;postmeta} pm\n            LEFT JOIN {$wpdb-&gt;posts} p ON pm.post_id = p.ID\n            WHERE p.ID IS NULL\n            LIMIT 1000\n        \");\n\n        if (empty($orphans)) {\n            $this-&gt;components-&gt;info('No orphaned metadata found');\n            return 0;\n        }\n<\/code><\/pre>\n<p>Lorsque la commande trouve des orphelins, elle vous montre un d\u00e9compte et \u00e9chantillonne quelques enregistrements si vous \u00eates en mode de fonctionnement \u00e0 vide. Vous devez v\u00e9rifier ce qui est supprim\u00e9 avant de valider :<\/p>\n<pre><code class=\"language-php\">        $count = count($orphans);\n        $this-&gt;components-&gt;warn(\"Found {$count} orphaned metadata records\");\n        if ($dryRun) {\n            $this-&gt;newLine();\n            $this-&gt;line('Sample orphaned records:');\n\n            foreach (array_slice($orphans, 0, 5) as $orphan) {\n                $this-&gt;line(\"  \u2192 Post ID {$orphan-&gt;post_id}: {$orphan-&gt;meta_key}\");\n            }\n\n            return 0;\n        }\n<\/code><\/pre>\n<p>La suppression proprement dite utilise <code>$wpdb-&gt;prepare()<\/code> pour \u00e9viter les attaques par <a href=\"https:\/\/kinsta.com\/fr\/blog\/injections-sql\/\">injection SQL<\/a>. La commande traite 1000 enregistrements \u00e0 la fois, ce qui \u00e9vite les probl\u00e8mes de m\u00e9moire sur les sites comportant des millions d&rsquo;entr\u00e9es de m\u00e9tadonn\u00e9es :<\/p>\n<pre><code class=\"language-php\">        \/\/ Delete orphaned records\n        $metaIds = array_map(function($orphan) {\n            return $orphan-&gt;meta_id;\n        }, $orphans);\n\n        $placeholders = implode(',', array_fill(0, count($metaIds), '%d'));\n\n        $deleted = $wpdb-&gt;query(\n            $wpdb-&gt;prepare(\n                \"DELETE FROM {$wpdb-&gt;postmeta} WHERE meta_id IN ({$placeholders})\",\n                ...$metaIds\n            )\n        );\n\n        if ($deleted === false) {\n            $this-&gt;components-&gt;error('Failed to delete orphaned metadata');\n            return 1;\n        }\n\n        $this-&gt;components-&gt;info(\"Deleted {$deleted} orphaned metadata records\");\n        return 0;\n    }\n}\n<\/code><\/pre>\n<p>Pour ex\u00e9cuter la commande, utilisez <code>wp acorn maintenance:cleanup-orphaned-meta --dry-run<\/code>.<\/p>\n<h3>2. Suppression des transitoires expir\u00e9s<\/h3>\n<p>WordPress stocke les <a href=\"https:\/\/developer.wordpress.org\/apis\/transients\/\" target=\"_blank\" rel=\"noopener noreferrer\">transitoires<\/a> dans <code>wp_options<\/code> avec des dates d&rsquo;expiration. Bien qu&rsquo;une <a href=\"https:\/\/kinsta.com\/fr\/blog\/tache-cron-wordpress\/\">t\u00e2che cron<\/a> quotidienne les nettoie, vous devez parfois lancer un nettoyage manuel pendant les fen\u00eatres de maintenance ou lorsque le gonflement transitoire devient un probl\u00e8me.<\/p>\n<p>Apr\u00e8s avoir g\u00e9n\u00e9r\u00e9 la commande avec <code>wp acorn make:command CleanupTransients<\/code>, vous pouvez configurer la structure de la commande :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace AppConsoleCommands;\nuse IlluminateConsoleCommand;\nclass CleanupTransients extends Command\n{\n    protected $signature = 'maintenance:cleanup-transients';\n    protected $description = 'Delete expired transients from wp_options';\n    public function handle()\n    {\n        global $wpdb;\n\n        $this-&gt;components-&gt;info('Deleting expired transients...');\n<\/code><\/pre>\n<p>Cette requ\u00eate de suppression utilise la syntaxe multi-table <code>DELETE<\/code> pour supprimer \u00e0 la fois le transitoire et son option de d\u00e9lai en une seule fois. La requ\u00eate recherche les enregistrements de d\u00e9lai d&rsquo;attente dont l&rsquo;heure d&rsquo;expiration est d\u00e9pass\u00e9e :<\/p>\n<pre><code class=\"language-php\">        \/\/ Delete expired regular transients\n        $deleted = $wpdb-&gt;query(\n            $wpdb-&gt;prepare(\n                \"DELETE a, b FROM {$wpdb-&gt;options} a, {$wpdb-&gt;options} b\n                WHERE a.option_name LIKE %s\n                AND a.option_name NOT LIKE %s\n                AND b.option_name = CONCAT('_transient_timeout_', SUBSTRING(a.option_name, 12))\n                AND b.option_value &lt; %d\",\n                $wpdb-&gt;esc_like('_transient_') . '%',\n                $wpdb-&gt;esc_like('_transient_timeout_') . '%',\n                time()\n            )\n        );\n<\/code><\/pre>\n<p>V\u00e9rifiez \u00e9galement s&rsquo;il y a des erreurs et suivez le nombre de suppressions :<\/p>\n<pre><code class=\"language-php\">        if ($deleted === false) {\n            $this-&gt;components-&gt;error('Failed to delete transients');\n            return 1;\n        }\n\n        $transientCount = $deleted;\n<\/code><\/pre>\n<p>Sur les <a href=\"https:\/\/kinsta.com\/fr\/blog\/multisite-wordpress\/\">installations multisites<\/a>, la commande ex\u00e9cute une deuxi\u00e8me requ\u00eate pour les sites transitoires. Ces derniers utilisent des pr\u00e9fixes de table diff\u00e9rents mais suivent le m\u00eame mod\u00e8le de suppression :<\/p>\n<pre><code class=\"language-php\">        \/\/ Delete expired site transients (multisite)\n        if (is_multisite()) {\n            $siteDeleted = $wpdb-&gt;query(\n                $wpdb-&gt;prepare(\n                    \"DELETE a, b FROM {$wpdb-&gt;options} a, {$wpdb-&gt;options} b\n                    WHERE a.option_name LIKE %s\n                    AND a.option_name NOT LIKE %s\n                    AND b.option_name = CONCAT('_site_transient_timeout_', SUBSTRING(a.option_name, 17))\n                    AND b.option_value &lt; %d\",\n                    $wpdb-&gt;esc_like('_site_transient_') . '%',\n                    $wpdb-&gt;esc_like('_site_transient_timeout_') . '%',\n                    time()\n                )\n            );\n\n            if ($siteDeleted !== false) {\n                $transientCount += $siteDeleted;\n            }\n        }\n\n        $this-&gt;components-&gt;info(\"Deleted {$transientCount} expired transients\");\n\n        return 0;\n    }\n}\n<\/code><\/pre>\n<p>Pour ex\u00e9cuter la commande, lancez <code>wp acorn maintenance:cleanup-transients<\/code>.<\/p>\n<h3>3. Auditer les options charg\u00e9es automatiquement<\/h3>\n<p>Les <a href=\"https:\/\/kinsta.com\/fr\/blog\/donnees-wp-options-automatiquement-chargees\/\">options charg\u00e9es automatiquement<\/a> se chargent \u00e0 chaque requ\u00eate trait\u00e9e par votre site WordPress. Vous pouvez commencer \u00e0 observer des ralentissements et des pics de consommation de m\u00e9moire lorsque ces donn\u00e9es d\u00e9passent 1 Mo. Cette commande recherche les options les plus charg\u00e9es afin que vous puissiez identifier les extensions responsables de ce gonflement.<\/p>\n<p>Tout d&rsquo;abord, cr\u00e9ez la commande d&rsquo;audit avec <code>wp acorn make:command AuditAutoload<\/code>. Ensuite, d\u00e9finissez la signature de la commande avec un seuil configurable :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace AppConsoleCommands;\nuse IlluminateConsoleCommand;\nclass AuditAutoload extends Command\n{\n    protected $signature = 'maintenance:audit-autoload \n                            {--threshold=1000000 : Size threshold in bytes}';\n\n    protected $description = 'Audit autoloaded options size';\n    public function handle()\n    {\n        global $wpdb;\n\n        $threshold = (int) $this-&gt;option('threshold');\n\n        $this-&gt;components-&gt;info('Calculating autoloaded options size...');\n<\/code><\/pre>\n<p>A partir de l\u00e0, calculez la taille totale de toutes les options charg\u00e9es automatiquement :<\/p>\n<pre><code class=\"language-php\">        \/\/ Get total autoload size\n        $result = $wpdb-&gt;get_row(\n            \"SELECT \n                SUM(LENGTH(option_value)) as total_bytes,\n                COUNT(*) as total_count\n            FROM {$wpdb-&gt;options}\n            WHERE autoload = 'yes'\"\n        );\n\n        $totalBytes = (int) $result-&gt;total_bytes;\n        $totalCount = (int) $result-&gt;total_count;\n        $totalMb = round($totalBytes \/ 1024 \/ 1024, 2);\n\n        $this-&gt;newLine();\n        $this-&gt;line(\"Total autoloaded: {$totalMb} MB ({$totalCount} options)\");\n<\/code><\/pre>\n<p>La commande recherche les options sup\u00e9rieures \u00e0 votre seuil, les trie par taille et limite les r\u00e9sultats aux 20 plus grandes :<\/p>\n<pre><code class=\"language-php\">        \/\/ Get largest autoloaded options\n        $largeOptions = $wpdb-&gt;get_results(\n            $wpdb-&gt;prepare(\n                \"SELECT option_name, LENGTH(option_value) as size_bytes\n                FROM {$wpdb-&gt;options}\n                WHERE autoload = 'yes'\n                AND LENGTH(option_value) &gt; %d\n                ORDER BY size_bytes DESC\n                LIMIT 20\",\n                $threshold\n            )\n        );\n\n        if (empty($largeOptions)) {\n            $this-&gt;components-&gt;info('No options exceed the threshold');\n            return 0;\n        }\n<\/code><\/pre>\n<p>La m\u00e9thode Artisan <code>$this-&gt;table()<\/code> formate ces r\u00e9sultats sous la forme d&rsquo;un tableau ASCII : la lecture de donn\u00e9es tabulaires dans votre terminal est pr\u00e9f\u00e9rable \u00e0 l&rsquo;analyse de la sortie brute de la requ\u00eate :<\/p>\n<pre><code class=\"language-php\">        $this-&gt;newLine();\n        $this-&gt;components-&gt;warn('Large autoloaded options:');\n        $this-&gt;newLine();\n\n        $tableData = [];\n\n        foreach ($largeOptions as $option) {\n            $sizeKb = round($option-&gt;size_bytes \/ 1024, 2);\n            $tableData[] = [\n                $option-&gt;option_name,\n                $sizeKb . ' KB'\n            ];\n        }\n\n        $this-&gt;table(\n            ['Option Name', 'Size'],\n            $tableData\n        );\n<\/code><\/pre>\n<p>La commande \u00e9met un avertissement lorsque le chargement automatique total d\u00e9passe 3 Mo, ce qui indique un probl\u00e8me de performance que vous devez r\u00e9soudre :<\/p>\n<pre><code class=\"language-php\">        if ($totalBytes &gt; 3000000) {\n            $this-&gt;newLine();\n            $this-&gt;components-&gt;error('Warning: Total autoload exceeds 3MB');\n        }\n\n        return 0;\n    }\n}\n<\/code><\/pre>\n<p>Pour lancer l&rsquo;audit, utilisez <code>wp acorn maintenance:audit-autoload --threshold=500000<\/code>.<\/p>\n<h2>Comment acc\u00e9der aux donn\u00e9es de WordPress dans les commandes<\/h2>\n<p>Les fonctions WordPress fonctionnent \u00e0 l&rsquo;int\u00e9rieur de vos m\u00e9thodes de commande parce qu&rsquo;Acorn s&rsquo;int\u00e8gre dans le cycle de vie de WordPress. Cela signifie que vous pouvez appeler certaines fonctions telles que <code>get_posts()<\/code> ou <code>get_option()<\/code> sans aucune configuration particuli\u00e8re :<\/p>\n<pre><code class=\"language-php\">public function handle()\n{\n    $posts = get_posts([\n        'post_type' =&gt; 'post',\n        'post_status' =&gt; 'publish',\n        'numberposts' =&gt; 10,\n    ]);\n\n    foreach ($posts as $post) {\n        $this-&gt;line($post-&gt;post_title);\n    }\n\n    return 0;\n}\n<\/code><\/pre>\n<p>Pour les requ\u00eates directes \u00e0 la base de donn\u00e9es, d\u00e9clarez le global <code>$wpdb<\/code> au d\u00e9but de votre m\u00e9thode :<\/p>\n<pre><code class=\"language-php\">public function handle()\n{\n    global $wpdb;   \n\n    $count = $wpdb-&gt;get_var(\n        \"SELECT COUNT(*) FROM {$wpdb-&gt;posts} WHERE post_status = 'publish'\"\n    );\n\n    $this-&gt;line(\"Published posts: {$count}\");\n\n    return 0;\n}\n<\/code><\/pre>\n<p><code>$wpdb-&gt;prepare()<\/code> est id\u00e9al lorsque vos requ\u00eates comprennent des variables ou des entr\u00e9es utilisateur, car il permet de pr\u00e9venir les attaques par injection SQL :<\/p>\n<pre><code class=\"language-php\">$status = 'publish';\n$postType = 'post';\n$results = $wpdb-&gt;get_results(\n    $wpdb-&gt;prepare(\n        \"SELECT ID, post_title FROM {$wpdb-&gt;posts} \n        WHERE post_status = %s AND post_type = %s\",\n        $status,\n        $postType\n    )\n);\n<\/code><\/pre>\n<p>Si vous testez <code>false<\/code> apr\u00e8s toute op\u00e9ration sur la base de donn\u00e9es, vous devriez pouvoir d\u00e9tecter les erreurs :<\/p>\n<pre><code class=\"language-php\">$updated = $wpdb-&gt;update(\n    $wpdb-&gt;posts,\n    ['post_status' =&gt; 'draft'],\n    ['ID' =&gt; 123],\n    ['%s'],\n    ['%d']\n);\n\nif ($updated === false) {\n    $this-&gt;components-&gt;error('Database update failed');\n    return 1;\n}\n<\/code><\/pre>\n<p>Les <a href=\"https:\/\/kinsta.com\/fr\/blog\/types-publications-personnalises-wordpress\/\">types de publication personnalis\u00e9s<\/a> et les taxonomies fonctionnent avec les fonctions standard de WordPress :<\/p>\n<pre><code class=\"language-php\">$terms = get_terms([\n    'taxonomy' =&gt; 'category',\n    'hide_empty' =&gt; false,\n]);\n\nforeach ($terms as $term) {\n    wp_update_term($term-&gt;term_id, 'category', [\n        'description' =&gt; 'Updated via command',\n    ]);\n}\n<\/code><\/pre>\n<h2>Les commandes WP-CLI personnalis\u00e9es sont simples avec Acorn et Artisan Console<\/h2>\n<p><a href=\"https:\/\/roots.io\/acorn\/\" target=\"_blank\" rel=\"noopener noreferrer\">Acorn<\/a> vous permet d&rsquo;acc\u00e9der aux classes de commandes structur\u00e9es de Laravel, aux composants de sortie format\u00e9s, \u00e0 la gestion des erreurs, et plus encore, tout en vous donnant un acc\u00e8s complet aux fonctions et aux donn\u00e9es de WordPress.<\/p>\n<p>Vous pouvez int\u00e9grer des commandes via l&rsquo;acc\u00e8s SSH et la planification cron dans Kinsta. Vous pouvez \u00e9galement ajouter des commandes \u00e0 vos scripts de d\u00e9ploiement pour automatiser la maintenance, par exemple en utilisant les flux de travail <a href=\"https:\/\/kinsta.com\/blog\/github-actions\/\">GitHub Actions<\/a>.<\/p>\n<p>Si vous \u00eates pr\u00eat \u00e0 centraliser vos t\u00e2ches de maintenance WordPress avec des commandes WP-CLI personnalis\u00e9es, l<a href=\"https:\/\/kinsta.com\/fr\/hebergement-wordpress\/\">&lsquo;h\u00e9bergement WordPress infog\u00e9r\u00e9 de Kinsta<\/a> inclut l&rsquo;acc\u00e8s SSH et WP-CLI sur tous les plans.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vous avez probablement des scripts PHP qui effectuent diverses t\u00e2ches, telles que le nettoyage des m\u00e9tadonn\u00e9es de messages orphelins ou la suppression des messages transitoires expir\u00e9s. &#8230;<\/p>\n","protected":false},"author":287,"featured_media":82590,"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-82589","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>Cr\u00e9ez des commandes WP-CLI et automatisez la maintenance avec Acorn.<\/title>\n<meta name=\"description\" content=\"Gr\u00e2ce \u00e0 WP-CLI, Acorn et WordPress, vous pouvez cr\u00e9er des commandes personnalis\u00e9es facilitant la maintenance de votre site. Cet article vous explique comment faire.\" \/>\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\/commandes-wp-cli-personnalisees-acorn\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment cr\u00e9er des commandes WP-CLI personnalis\u00e9es et automatiser la maintenance de WordPress avec Acorn\" \/>\n<meta property=\"og:description\" content=\"Gr\u00e2ce \u00e0 WP-CLI, Acorn et WordPress, vous pouvez cr\u00e9er des commandes personnalis\u00e9es facilitant la maintenance de votre site. Cet article vous explique comment faire.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/\" \/>\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-02-25T09:53:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-27T09:38:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.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=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Gr\u00e2ce \u00e0 WP-CLI, Acorn et WordPress, vous pouvez cr\u00e9er des commandes personnalis\u00e9es facilitant la maintenance de votre site. Cet article vous explique comment faire.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Comment cr\u00e9er des commandes WP-CLI personnalis\u00e9es et automatiser la maintenance de WordPress avec Acorn\",\"datePublished\":\"2026-02-25T09:53:33+00:00\",\"dateModified\":\"2026-02-27T09:38:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/\"},\"wordCount\":1527,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png\",\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/\",\"name\":\"Cr\u00e9ez des commandes WP-CLI et automatisez la maintenance avec Acorn.\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png\",\"datePublished\":\"2026-02-25T09:53:33+00:00\",\"dateModified\":\"2026-02-27T09:38:18+00:00\",\"description\":\"Gr\u00e2ce \u00e0 WP-CLI, Acorn et WordPress, vous pouvez cr\u00e9er des commandes personnalis\u00e9es facilitant la maintenance de votre site. Cet article vous explique comment faire.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#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\":\"Comment cr\u00e9er des commandes WP-CLI personnalis\u00e9es et automatiser la maintenance de WordPress avec Acorn\"}]},{\"@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\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cr\u00e9ez des commandes WP-CLI et automatisez la maintenance avec Acorn.","description":"Gr\u00e2ce \u00e0 WP-CLI, Acorn et WordPress, vous pouvez cr\u00e9er des commandes personnalis\u00e9es facilitant la maintenance de votre site. Cet article vous explique comment faire.","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\/commandes-wp-cli-personnalisees-acorn\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment cr\u00e9er des commandes WP-CLI personnalis\u00e9es et automatiser la maintenance de WordPress avec Acorn","og_description":"Gr\u00e2ce \u00e0 WP-CLI, Acorn et WordPress, vous pouvez cr\u00e9er des commandes personnalis\u00e9es facilitant la maintenance de votre site. Cet article vous explique comment faire.","og_url":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2026-02-25T09:53:33+00:00","article_modified_time":"2026-02-27T09:38:18+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png","type":"image\/png"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Gr\u00e2ce \u00e0 WP-CLI, Acorn et WordPress, vous pouvez cr\u00e9er des commandes personnalis\u00e9es facilitant la maintenance de votre site. Cet article vous explique comment faire.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Joel Olawanle","Dur\u00e9e de lecture estim\u00e9e":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Comment cr\u00e9er des commandes WP-CLI personnalis\u00e9es et automatiser la maintenance de WordPress avec Acorn","datePublished":"2026-02-25T09:53:33+00:00","dateModified":"2026-02-27T09:38:18+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/"},"wordCount":1527,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png","inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/","url":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/","name":"Cr\u00e9ez des commandes WP-CLI et automatisez la maintenance avec Acorn.","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png","datePublished":"2026-02-25T09:53:33+00:00","dateModified":"2026-02-27T09:38:18+00:00","description":"Gr\u00e2ce \u00e0 WP-CLI, Acorn et WordPress, vous pouvez cr\u00e9er des commandes personnalis\u00e9es facilitant la maintenance de votre site. Cet article vous explique comment faire.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/02\/automating-wordpress-maintenance-with-wp-cli-and-acorn.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/commandes-wp-cli-personnalisees-acorn\/#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":"Comment cr\u00e9er des commandes WP-CLI personnalis\u00e9es et automatiser la maintenance de WordPress avec Acorn"}]},{"@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\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/fr\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/82589","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\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=82589"}],"version-history":[{"count":5,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/82589\/revisions"}],"predecessor-version":[{"id":82634,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/82589\/revisions\/82634"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82589\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82589\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82589\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82589\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82589\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82589\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82589\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82589\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/82589\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/82590"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=82589"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=82589"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=82589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}