Au fil des ans, les développeurs de WordPress ont créé et maintenu WP-CLI, une interface de ligne de commande robuste spécialement conçue pour les opérations de WordPress. En tant qu’outil permettant de gagner du temps, WP-CLI est particulièrement bien adapté à la gestion des réseaux WordPress Multisite, qui permettent à plusieurs sites de fonctionner sur une seule installation WordPress.

Pour utiliser WP-CLI efficacement, il est essentiel de comprendre les composants clés de WordPress : l’interface d’administration, la structure des fichiers et la base de données. Sans ces connaissances fondamentales, WP-CLI risque de ne pas être aussi efficace ou bénéfique.

Bien que WP-CLI prenne en charge des commandes standard telles que l’installation, la mise à jour, l’activation, la désactivation et la suppression d’extensions ou de thèmes, ses capacités vont bien au-delà de ce qui est disponible dans le tableau de bord d’administration de WordPress, ce qui en fait un outil très polyvalent pour la gestion avancée d’un site.

Cet article explique comment utiliser WP-CLI pour gérer efficacement les réseaux WordPress Multisite et fournit des exemples pratiques pour t’aider à démarrer.

Qu’est-ce que WP-CLI et pourquoi l’utiliser ?

WP-CLI est un outil puissant pour gérer les sites WordPress via la ligne de commande. Dans un environnement multisite, il peut considérablement simplifier la gestion d’un réseau, en te permettant d’effectuer des actions groupée et de rationaliser votre flux de travail.

Sa véritable force réside dans sa flexibilité et son extensibilité – vous pouvez sans effort exécuter des commandes sur l’ensemble du réseau ou cibler des sites spécifiques tout en améliorant ses fonctionnalités grâce à divers paquets WP-CLI disponibles sur GitHub et d’autres dépôts.

Les développeurs créent souvent des commandes WP-CLI personnalisées pour simplifier les tâches répétitives. Par exemple, vous pouvez utiliser WP-CLI pour échafauder du code passe-partout pour les thèmes et les extensions, ce qui vous permet d’économiser du temps et des efforts pendant le développement.

Si vous êtes hébergé chez Kinsta, WP-CLI est intégré et accessible via SSH, ce qui vous permet de gérer vos sites WordPress sans effort. Pour le développement local, WP-CLI est disponible dans DevKinsta via le conteneur devkinsta_fpm. Une fois dans le conteneur, vous pouvez naviguer jusqu’au dossier de votre site et exécuter des commandes. Bien que cela nécessite un peu d’installation, c’est un moyen puissant de gérer efficacement vos sites WordPress locaux pour le débogage, les tests ou le déploiement.

Avant de commencer

Les commandes présentées dans cet article ont été soigneusement choisies pour leur utilisation fréquente par les développeurs et les administrateurs de WordPress Multisite.

WP-CLI est un outil vaste et flexible, il est donc impossible de couvrir toutes les commandes disponibles. Pour que les choses restent claires et pratiques, nous nous sommes concentrés sur des exemples simples et exploitables pour vous aider à démarrer.

WP-CLI étant basé sur les commandes Unix, il est possible que vous ne trouviez pas d’équivalent WP-CLI pour des commandes qui existent déjà dans Unix.

Notes clés sur WP-CLI

La structure des commandes de WP-CLI est flexible et permet d’obtenir le même résultat de plusieurs façons. Par exemple, les deux exemples suivants sont valables :

wp user create johndoe [email protected] --display_name="John Doe" --nickname="Johnny"

Ou :

wp user create johndoe --display_name="John Doe" [email protected] --nickname="Johnny"

L’ordre des drapeaux, des paramètres et des valeurs n’a pas d’importance une fois que la commande et la sous-commande sont énoncées.

Meilleures pratiques pour l’exécution des commandes WP-CLI

Suivez ces meilleures pratiques pour éviter les problèmes potentiels :

  • Ayez toujours une sauvegarde à jour, d’autant plus que certaines de ces commandes modifieront votre ou vos sites de façon permanente.
  • Utilisez un site de staging dans la mesure du possible. Si vous utilisez Kinsta, chaque installation de WordPress comprend un environnement de staging gratuit pour des tests en toute sécurité. Vous pouvez facilement transférer des modifications entre les environnements de staging et les environnements réels.
  • Utilisez le drapeau --dry-run pour tester les modifications de la base de données avant de les appliquer.

Commandes WP-CLI essentielles pour la gestion de WordPress Multisite

Les commandes WP-CLI dans un réseau Multisite peuvent cibler différents niveaux d’action :

  • A l’échelle du réseau: Commandes appliquées à l’ensemble des sites du réseau. Par exemple :
    wp plugin deactivate --network --all

    Cette commande désactive toutes les extensions sur tous les sites du réseau.

  • Site principal : Commandes appliquées au site principal créé lors de la configuration Multisite. Par exemple :
    wp plugin list

    La commande ci-dessus liste toutes les extensions installées sur le site principal uniquement.

  • Sites secondaires : Commandes ciblant des sites individuels au sein du réseau, spécifiés par leur URL. Par exemple :
    wp plugin update --url=mysite.example.com akismet

    Cette commande met à jour l’extension akismet sur le site mysite.example.com.

Pour faciliter la gestion de votre réseau multisite, nous avons regroupé les commandes WP-CLI dans ces sections :

Commandes de base

Ces commandes fondamentales vous aident à dépanner et à gérer les extensions et les thèmes de votre réseau.

Travailler avec des listes

WP-CLI permet de récupérer facilement des listes d’extensions et d’autres composants dans votre environnement Multisite.

  1. Obtenir une liste de toutes les extensions du réseau :
    wp plugin list --network

    Sortie : Affiche toutes les extensions installées sur le réseau avec des détails tels que le nom, l’état, les mises à jour disponibles et la version.

  2. Filtrer les extensions par état (par exemple, actif) :
    wp plugin list --network --status=active

    Sortie : Un tableau des extensions actives sur le réseau.

  3. Obtenir une liste d’extensions à partir du site principal :
    wp plugin list

    Sortie : Une liste d’extensions pour le site principal.

  4. Obtenir une liste des extensions actives pour un seul site :
    wp plugin list --url=<site-url> --status=active

    Exemple de saisie :

    wp plugin list --url=blog.example.com --status=active

    Sortie : Un tableau des extensions actives pour le site blog.example.com.

En plus de filtrer les extensions par status=active, vous pouvez aussi utiliser les filtres suivants :

  • inactive: Les extensions installées mais non actives.
  • active-network: Les extensions actives sur le réseau.
  • must-use: Les extensions indispensables qui se chargent automatiquement.

Désactiver des plugins

La désactivation des extensions est souvent nécessaire lors de la résolution de problèmes ou de la préparation de mises à jour. WP-CLI vous permet de désactiver des extensions sur l’ensemble du réseau ou pour des sites spécifiques.

  1. Désactiver toutes les extensions du réseau :
    wp plugin deactivate --network --all

    Résultat : Toutes les extensions du réseau sont désactivées.

  2. Désactiver des extensions spécifiques pour un seul site :
    wp plugin deactivate <plugin-slug-1> <plugin-slug-2> --url=<site-url>

    Exemple de saisie :

    wp plugin deactivate akismet hello-dolly --url=blog.example.com

    Résultat : Les extensions akismet et hello-dolly sont désactivées pour le site blog.example.com.

Activer les plugins

Utilisez ces commandes pour activer les extensions, soit à l’échelle du réseau, soit pour des sites individuels dans votre configuration Multisite.

  1. Activer toutes les extensions du réseau :
    wp plugin activate --network --all

    Résultat : Toutes les extensions du réseau sont activées.

  2. Activer des extensions spécifiques pour un seul site :
    wp plugin activate <plugin-slug-1> <plugin-slug-2> --url=<site-url>

    Exemple de saisie :

    wp plugin activate akismet hello-dolly --url=blog.example.com

    Résultat : Les extensions akismet et hello-dolly sont activées pour le site blog.example.com.

Installer des plugins

L’installation d’extensions avec WP-CLI est rapide et efficace. Une fois installées, les extensions peuvent être activées pour des sites individuels ou sur l’ensemble du réseau.

La commande suivante peut être utilisée pour installer une extension pour le réseau :

wp plugin install <plugin-slug>

Exemple de saisie :

wp plugin install akismet

Résultat : L’extension akismet est installée et prête à être activée.

Mise à jour des plugins

Maintenez vos extensions à jour sur l’ensemble de votre réseau ou pour des sites spécifiques à l’aide de ces commandes.

  1. Mettre à jour toutes les extensions du réseau :
    wp plugin update --network --all

    Résultat : Toutes les extensions du réseau sont mises à jour.

  2. Mettre à jour des extensions spécifiques dans le réseau :
    wp plugin update <plugin-slug-1> <plugin-slug-2> --network

    Exemple d’entrée :

    wp plugin update akismet jetpack bbpress --network

    Résultat : Les extensions akismet, jetpack, et bbpress sont mises à jour sur le réseau.

  3. Mettre à jour une extension pour un seul site :
    wp plugin update --url=<site-url> <plugin-slug>

    Exemple de saisie :

    wp plugin update --url=blog.example.com hello-dolly

    Résultat : L’extension hello-dolly est mise à jour pour le site blog.example.com.

Supprimer des plugins

La suppression des extensions est simple avec WP-CLI, que vous travailliez sur un seul site ou sur un réseau multisite.

  1. Supprimer une extension du contexte WordPress actuel (réseau ou site) :
    wp plugin delete <plugin-slug>

    Exemple de saisie :

    wp plugin delete bbpress

    Résultat : L’extension bbpress est supprimée.

  2. Supprimer une extension pour un site spécifique dans un Multisite :
    wp plugin delete <plugin-slug> --url=<site-url>

    Exemple de saisie :

    wp plugin delete bbpress --url=blog.example.com

    Résultat : L’extension bbpress est supprimée du site blog.example.com.

Gestion du réseau

La gestion des sites au sein d’un réseau WordPress Multisite est une tâche cruciale. Vous trouverez ci-dessous des commandes WP-CLI courantes qui vous aideront à créer, gérer et supprimer efficacement des sites, ainsi qu’à gérer les opérations de mise en cache.

Créer des sites

Ajouter de nouveaux sites à votre réseau est très simple avec WP-CLI.

  • Commande de base : Créer un nouveau site en spécifiant un nom unique.
    wp site create --slug=<site-name>

    Exemple de saisie :

    wp site create --slug=blog

    Résultat : Un nouveau site blog.example.com ou example.com/blog, selon la configuration de votre réseau, est créé et est automatiquement actif.

  • Commande avancée : Il est également possible d’ajouter des drapeaux à la commande. Dans l’exemple ci-dessous, un site est ajouté avec un titre de site et un administrateur de site spécifiés.
    wp site create --slug=<site-name> --title="<site-title>" --email=<admin-email>

    Exemple de saisie :

    wp site create --slug=blog --title="Blog Site" [email protected]

    Résultat : Un site intitulé « Blog Site » est créé avec [email protected] comme administrateur.

  • Lister tous les sites : Récupérer un tableau affichant les identifiants des sites, les URL, les dates de création et les dates de dernière mise à jour :
    wp site list

    Vous pouvez aussi affiner la liste des sites pour n’obtenir que les URL de tous les sites du réseau :

    wp site list --field=url

    Résultat : Une liste d’URL pour chaque site.

Vider et supprimer des sites

  1. Vider le site principal :
    wp site empty

    Sortie : Une demande de confirmation apparaît pour supprimer tout le contenu du site principal.

  2. Vider un seul site (supprime tous les messages, pages, liens et taxonomies) :
    wp site empty --url=<site-url>

    Exemple de saisie :

    wp site empty --url=blog.example.com

    Résultat : Tout le contenu de blog.example.com est supprimé, mais le site reste intact.

  3. Vider tous les sites du réseau :
    wp site list --field=url | xargs -n1 -I % wp site empty --url=% --yes

    Résultat : Cette commande lance une boucle à travers toutes les URL et procède ensuite au vidage du contenu de chaque site sans qu’il soit nécessaire de fournir une approbation pour chaque site.

  4. Supprimer un seul site par son identifiant :
    wp site delete <site-id>

    Exemple de saisie :

    wp site delete 5

    Résultat : Le site avec l’ID 5 est supprimé.

  5. Supprime plusieurs sites avec le contournement de confirmation :
    wp site delete 2 --yes
    wp site delete 3 --yes

    Résultat : Les sites avec les identifiants 2 et 3 sont supprimés. L’indicateur --yes permet d’ignorer les invites.

Vider le cache

Comme de nombreux types de cache sont stockés de différentes manières ici, nous utilisons l’extension Kinsta Must-Use. Elle est installée automatiquement pour chaque site WordPress de notre système.

Cela efface tout le cache, y compris le cache du site, le cache edge, le cache CDN et le cache Redis.

  1. Vider tout le cache (site, edge, CDN et Redis) :
    wp kinsta cache purge --all
  2. Vider uniquement le cache du site :
    wp kinsta cache purge --site
  3. Vider le cache CDN :
    wp kinsta cache purge --cdn
  4. Vider le cache des objets :
    wp cache purge

Gestion des utilisateurs

WP-CLI simplifie la gestion des utilisateurs dans un environnement multisite, en vous permettant d’effectuer des tâches rapidement et efficacement. Cette section couvre les opérations courantes de gestion des utilisateurs :

Lister les utilisateurs

Lister les utilisateurs d’un réseau ou d’un site spécifique est simple avec WP-CLI.

  1. Lister tous les utilisateurs du réseau :
    wp user list --network

    Sortie : Un tableau indiquant l’ID de l’utilisateur, la connexion, le nom d’affichage, le nom d’utilisateur, la date d’enregistrement et le rôle pour chaque utilisateur ou requête de liste d’utilisateurs.

  2. Lister des utilisateurs pour le site principal :
    wp user list

    Résultat : Affiche un tableau des utilisateurs du site principal.

  3. Lister les utilisateurs pour un site spécifique (site secondaire) :
    wp user list --blog_id=<id>
    wp user list --url=<url>

    Exemple de saisie :

    wp user list --blog_id=6

    Résultat : Affiche un tableau de tous les utilisateurs du site avec l’ID du blog 6.

Créer des utilisateurs

Dans un réseau multisite, les utilisateurs sont inscrits au réseau par défaut. Leurs rôles dépendent du fait qu’ils sont le premier utilisateur ajouté à un site ou les utilisateurs suivants. Les noms d’utilisateur doivent comporter au moins quatre caractères.

  1. Ajouter un nouvel utilisateur au site principal :
    wp user create <username> <email>

    Exemple de saisie :

    wp user create johndoe [email protected]

    Sortie : Un message de réussite s’affiche, avec le mot de passe généré.

  2. Ajouter un nouvel utilisateur à un site spécifique avec un rôle spécifié :
    wp user create <username> <email> --role=<role> --url=<url>

    Exemple de saisie :

    wp user create janedoe [email protected] --role=editor --url=blog.example.com

    Sortie : L’utilisateur janedoe est ajouté au site blog.example.com en tant qu’éditeur.

  3. Ajouter les méta du compte de l’utilisateur lors de la création :
    wp user create <username> <email> --display_name=<name> --nickname=<nickname>

    Exemple de saisie :

    wp user create johndoe [email protected] --display_name="John Doe" --nickname="Johnny"

    Résultat : L’utilisateur johndoe est créé avec un nom d’affichage John Doe et un surnom Johnny.

Mise à jour des utilisateurs

La mise à jour des informations sur les utilisateurs, telles que les rôles ou les mots de passe, est rapide avec WP-CLI.

  1. Modifier (promouvoir ou rétrograder) les rôles des utilisateurs :
    wp user update <username|email|user_id> --role=<role>

    Exemple de saisie :

    wp user update johndoe janedoe adminuser --role=super-administrator

    Résultat : Les utilisateurs johndoe, janedoe, et adminuser sont promus super administrateurs.

  2. Réinitialiser ou modifie le mot de passe d’un utilisateur :
    wp user update <username> --user_pass=<new_password>

    Exemple de saisie :

    wp user update johndoe --user_pass=securePassword2024

    Résultat : Le mot de passe de johndoe est mis à jour.

  3. Commandes en chaîne : WP-CLI vous permet de combiner plusieurs actions en une seule commande, ce qui permet de gagner du temps lors de la modification des utilisateurs. Par exemple, vous peux mettre à jour simultanément le mot de passe et le rôle d’un utilisateur.
    wp user update <user> --user_pass=<new_password> --role=<status>

    Exemple de saisie :

    wp user update johndoe --user_pass="newPassword2024" --role=editor

    Résultat : Le mot de passe de l’utilisateur johndoe est mis à jour en newPassword2024, et son rôle est modifié en éditeur.

Gérer les méta utilisateurs

Les méta utilisateurs vous permettent d’ajouter, de récupérer ou de supprimer des métadonnées pour les comptes utilisateurs.

  1. Obtenir les méta de l’utilisateur :
    wp user meta get <username> <meta_key>

    Exemple de saisie :

    wp user meta get johndoe nickname

    Sortie : Afficher la valeur de la clé méta nickname pour l’utilisateur johndoe.

  2. Ajouter la clé méta de l’utilisateur :
    wp user meta add <username> <meta_key> <meta_value>

    Exemple de saisie :

    wp user meta add johndoe display_name "Mr. John Doe"

    Résultat : Mr. John Doe est défini comme nom d’affichage pour l’utilisateur johndoe.

  3. Supprimer les méta utilisateurs :
    wp user meta delete <username> <meta_key>

    Exemple de saisie :

    wp user meta delete johndoe display_name

    Résultat : Cette commande supprime la clé méta display_name de l’utilisateur johndoe.

Supprimer des utilisateurs

Supprimer des utilisateurs du réseau ou de sites spécifiques est efficace avec WP-CLI.

  1. Supprimer un utilisateur du réseau :
    wp user delete <username|user_id> --network

    Exemple de saisie :

    wp user delete johndoe --network

    Résultat : L’utilisateur johndoe est retiré du réseau.

  2. Supprimer un utilisateur d’un site spécifique :
    wp user delete <username|user_id> --url=<site-url>

    Exemple de saisie :

    wp user delete johndoe --url=mysite.example.com

    Résultat : L’utilisateur johndoe est supprimé du site mysite.example.com.

Gestion de la base de données

WP-CLI offre une alternative puissante à des outils comme phpMyAdmin pour gérer votre base de données. Cette section couvre les opérations courantes sur la base de données que vous pouvez effectuer à l’aide de WP-CLI :

Exporter une base de données

Avec WP-CLI, vous pouvez exporter ta base de données sous forme de fichier SQL. Le fichier exporté est enregistré dans le répertoire racine de votre installation WordPress.

wp db export

Résultat : Un fichier SQL est créé dans le répertoire racine.

Si le fichier exporté a un nom disgracieux, vous pouvez le renommer à l’aide de la commande suivante :

wp eval 'if ( rename( "unganglyfilename.sql", "newfilename.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'

Exemple de saisie :

wp eval 'if ( rename( "cilawawugo4504_gTr4kSXUsmJ9FNauVnPb-2024-11-17-9545b3f.sql", "network-db.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'

Résultat : Le fichier cilawaw…nPb--9545b3f.sql est renommé en network-db.sql.

Télécharger une base de données

Pour télécharger le fichier de base de données exporté sur votre machine locale, utilisez la commande curl.

curl <remote-url> -o <local-path>

Exemple de saisie :

curl example.com/network-db.sql -o ~/Downloads/network-db.sql

Résultat : Le fichier network-db.sql est téléchargé dans le répertoire local Downloads.

Téléverser une base de données

Vous pouvez téléverser un fichier de base de données dans le répertoire racine de votre installation Multisite à l’aide de la commande scp.

scp <local-path-to-file> <username>@<remote-server>:<remote-path>

Exemple de saisie :

scp ~/Downloads/network-db.sql [email protected]:/var/www/example.com/public_html

Résultat : Le fichier network-db.sql est téléversé dans le répertoire racine de votre installation WordPress après authentification.

Importer une base de données

Avant d’importer une base de données, il se peut que vous ayez besoin de réinitialiser vos tables de données existantes.

  1. Réinitialiser les tables de données :
    wp db reset

    Résultat : Toutes les tables de données de la base de données sont vidées.

  2. Importer la base de données :
    wp db import <file-name.sql>

    Exemple de saisie :

    wp db import network-db.sql

    Résultat : Le fichier network-db.sql remplit les tables de données vidées.

  3. Supprimer le fichier SQL importé. Pour des raisons de sécurité, supprimez le fichier SQL après l’importation :
    rm <file-name.sql>

Exemples pratiques

Nous pouvons penser à de nombreuses commandes qui accéléreront et simplifieront votre travail. En voici trois exemples. Bien que certaines de ces commandes soient plus complexes, elles s’appuient sur des commandes plus simples pour effectuer des opérations utiles.

Installer et activer les plugins et régénérer les miniatures simultanément.

Cette commande passe en boucle par tous les sites du réseau, installe et active deux extensions, et régénère les miniatures des images pour chaque site.

wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin activate <plugin slug> <plugin slug> --url=% && wp media regenerate --url=%'

Exemple d’entrée :

wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin install akismet bbpress --activate --url=% && wp media regenerate --url=%'

Résultat : Les extensions Akismet et BBPress sont installées et activées sur tous les sites, et les miniatures des images sont régénérées.

Ajout d’un champ méta personnalisé pour tous les utilisateurs

Cette commande parcourt en boucle tous les sites, récupère la liste des utilisateurs et ajoute un champ méta personnalisé pour chaque utilisateur.

wp site list --field=url | xargs -n1 -I % sh -c 'wp user list --fields=ID --url=% --format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} <meta-key> <meta-value> --url=%'

Exemple de saisie :

wp site list --field=url | xargs -n1 -I % sh -c 'wp user list --fields=ID --url=% --format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} favorite_color "" --url=%'

Résultat : Un champ méta personnalisé, favorite_color, est ajouté pour tous les utilisateurs sur tous les sites.

Pour surfacer le champ favorite_color, vous devrez utiliser votre fichier functions.php ou créer une extension personnalisée.

Conversion d’une installation monosite en multisite

WP-CLI facilite la conversion d’un site WordPress autonome en un réseau multisite.

wp core multisite-convert

Résultat : Le site unique est converti en réseau multisite.

Avant la conversion, veillez à désactiver toutes les extensions.

Après avoir converti le site, vous devez configurer les URL du réseau dans le fichier wp-config.php. Vous pouvez choisir d’utiliser des sous-domaines (par exemple, site.example.com) ou des sous-répertoires (par exemple, example.com/site). Vérifiez également le fichier .htaccess, car les règles de réécriture des URL (gérées par le module mod_rewrite d’Apache) peuvent nécessiter des mises à jour manuelles pour garantir que tes permaliens et la structure de votre site fonctionnent correctement.

Résumé

Ce guide met en lumière la puissance et la flexibilité de WP-CLI pour la gestion des environnements WordPress Multisite, ce qui en fait un outil essentiel pour les développeurs et les administrateurs en quête d’efficacité et de contrôle. De la gestion des extensions, des utilisateurs et des bases de données à l’exécution d’opérations avancées comme la conversion de sites uniques en Multisite, WP-CLI simplifie les tâches complexes avec précision et rapidité.

Kinsta propose un outil WP-CLI inestimable et extensible qui permet une gestion transparente des réseaux WordPress Multisite. Que vous travailliez sur des environnements live ou de staging ou que vous utilisiez notre outil de développement local, DevKinsta, WP-CLI est facilement disponible pour rationaliser votre flux de travail.

Commencez à créer des sites, à ajouter des extensions, des utilisateurs, et plus encore avec WP-CLI !

Bud Kraus

Bud Kraus has been working with WordPress as an in-class and online instructor, site developer, and content creator since 2009. He has produced instructional videos and written many articles for WordPress businesses.