WP-CLI pour les freelance : les 12 commandes qui m ont changé la vie

Dans cet article

  • WP-CLI permet de gérer un site WordPress entièrement en ligne de commande, sans jamais ouvrir le back-office
  • Les 12 commandes présentées ici couvrent 80 % des tâches récurrentes d un freelance WordPress : mises à jour, migrations, sauvegardes, nettoyage BDD
  • Un wp search-replace bien maîtrisé remplace une migration manuelle de 45 minutes par 30 secondes chrono
  • L automatisation via scripts bash + WP-CLI peut faire économiser 2 à 4 heures par semaine sur un portefeuille de 8 à 12 sites clients
  • WP-CLI fonctionne sur la plupart des hébergements sérieux en 2026 : VPS OVH, o2switch, Infomaniak, Kinsta, et même certains mutualisés
  • J utilise ces commandes depuis 2017 sur plus de 150 projets clients, et je détaille ici les pièges réels rencontrés en production

Pourquoi WP-CLI est devenu mon outil numéro un en freelance

En 2017, je gérais une dizaine de sites WordPress pour des clients PME en Île-de-France. Chaque lundi matin, c était le même rituel : ouvrir chaque back-office, vérifier les mises à jour, cliquer sur « tout mettre à jour », attendre, passer au suivant. Deux heures perdues, chaque semaine, sur des tâches purement mécaniques.

Le jour où un collègue de la communauté WordPress Paris m a montré WP-CLI, j ai compris que je venais de récupérer l équivalent d une demi-journée par semaine. WP-CLI, c est l interface en ligne de commande officielle de WordPress. Un outil maintenu par la communauté WordPress elle-même, documenté sur le site officiel make.wordpress.org, et utilisé en production par des équipes comme celles d Automattic.

Concrètement, tout ce que vous faites dans l admin WordPress, vous pouvez le faire en une ligne de commande. Mettre à jour le cœur, installer un plugin, créer un utilisateur, exporter la base de données, vider le cache, lancer un search-replace pour une migration. Sans navigateur, sans connexion lente, sans timeout.

Pour un freelance qui gère plusieurs sites, c est un changement de paradigme. On passe d un travail artisanal répétitif à une gestion industrialisée et scriptable. Et quand on facture au forfait de maintenance, chaque heure gagnée est une heure de marge en plus. Voici les 12 commandes qui ont transformé mon quotidien.

L installation de WP-CLI ne prend que quelques minutes sur un VPS
L installation de WP-CLI ne prend que quelques minutes sur un VPS

Installer WP-CLI sur un VPS ou un hébergement mutualisé

Avant de parler des commandes, il faut installer l outil. Sur un VPS OVH ou tout serveur dédié avec un accès SSH, c est réglé en trois commandes :

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Vérifiez l installation avec wp --info. Vous devez voir la version de WP-CLI, la version de PHP utilisée et le chemin de configuration. Si PHP CLI n est pas installé, un simple sudo apt install php-cli php-mysql sur Debian/Ubuntu règle le problème.

Sur un hébergement mutualisé, c est plus variable. o2switch propose WP-CLI préinstallé depuis 2020 via leur accès SSH. Infomaniak également. Chez OVH mutualisé, c est plus limité : l accès SSH existe sur les offres Pro et Performance, mais WP-CLI n est pas toujours préinstallé. Il faut alors le placer dans votre espace utilisateur :

mkdir -p ~/bin
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar ~/bin/wp
export PATH="$HOME/bin:$PATH"

Ajoutez la ligne export PATH dans votre fichier ~/.bashrc pour que ça persiste. Un conseil que je donne systématiquement à mes clients qui choisissent leur hébergement : demandez toujours si WP-CLI et SSH sont disponibles avant de signer. Un hébergeur qui ne propose pas SSH en 2026, c est un signal d alerte.

Les 4 commandes de maintenance qui font gagner 2 heures par semaine

Ces quatre commandes constituent le socle de ma routine de maintenance hebdomadaire. Ce sont les premières que j ai adoptées, et celles que je lance le plus souvent.

Commande 1 : wp core update

Met à jour le cœur de WordPress vers la dernière version stable.

wp core update
wp core update-db

Le update-db est crucial : il lance la mise à jour de la base de données qui accompagne parfois les montées de version. Beaucoup de freelances oublient cette étape en CLI alors qu elle est automatique via le back-office. Si vous l oubliez, vous risquez des comportements erratiques sur le site.

Commande 2 : wp plugin update –all

Met à jour tous les plugins d un coup.

wp plugin update --all

En production, je préfère souvent la version ciblée pour éviter les mauvaises surprises :

wp plugin update akismet contact-form-7 yoast-seo

Avant chaque mise à jour groupée, je fais systématiquement un export de la base (on verra la commande plus bas). Les mises à jour de plugins restent la première cause de casse sur les sites WordPress que je maintiens.

Commande 3 : wp theme update –all

Même logique pour les thèmes :

wp theme update --all

Sur les sites avec un thème enfant custom, cette commande ne met à jour que le thème parent. Votre thème enfant reste intact. C est l un des avantages de WP-CLI : il respecte exactement la même logique que le système de mise à jour interne de WordPress.

Commande 4 : wp cache flush

Vide le cache objet de WordPress.

wp cache flush

Cette commande est indispensable après une mise à jour, un changement de configuration, ou quand un client vous dit « j ai modifié un truc mais ça ne s affiche pas ». Si vous utilisez Redis ou Memcached comme cache objet, wp cache flush les vide également. Pour les caches de page (WP Super Cache, W3 Total Cache, WP Rocket), il faut utiliser les commandes spécifiques du plugin.

Ma routine complète de maintenance en une seule ligne :

wp db export backup-$(date +%Y%m%d).sql && wp core update && wp core update-db && wp plugin update --all && wp theme update --all && wp cache flush

Cette ligne fait en 30 secondes ce qui prenait 15 minutes par site dans le back-office. Multipliez par 10 sites, et vous comprenez pourquoi WP-CLI change la donne pour un freelance.

Gérer plusieurs sites WordPress clients depuis un seul terminal
Gérer plusieurs sites WordPress clients depuis un seul terminal

Gérer les plugins et thèmes sans toucher au back-office

Au-delà des mises à jour, WP-CLI permet de gérer tout le cycle de vie des extensions.

Commande 5 : wp plugin install –activate

Installe et active un plugin en une seule commande :

wp plugin install query-monitor --activate

C est ma commande préférée quand j interviens sur un nouveau site. Je commence toujours par installer Query Monitor pour auditer les performances. Autre cas concret : quand un client m appelle en urgence parce que son formulaire de contact ne marche plus, je peux installer et activer un plugin de débogage en 5 secondes sans même lui demander ses identifiants WordPress.

Vous pouvez aussi installer depuis un fichier zip local ou une URL :

wp plugin install ./mon-plugin-custom.zip --activate
wp plugin install https://exemple.com/plugin-premium.zip --activate

Commande 6 : wp plugin deactivate / wp plugin delete

Pour désactiver ou supprimer un plugin problématique :

wp plugin deactivate plugin-qui-plante
wp plugin delete plugin-qui-plante

Situation vécue : un client active un plugin de cache mal configuré, son site tombe. Il ne peut plus accéder au back-office. En SSH avec WP-CLI, je désactive le plugin en 3 secondes, le site revient, on respire. Sans WP-CLI, il aurait fallu aller renommer le dossier du plugin via FTP ou le gestionnaire de fichiers, beaucoup plus lent et risqué.

Commande 7 : wp user create

Crée un utilisateur WordPress directement :

wp user create thomas [email protected] --role=administrator --user_pass=MotDePasseTemporaire123!

Indispensable quand vous récupérez un site dont personne ne connaît les identifiants. Plutôt que de fouiller dans phpMyAdmin pour réinitialiser un mot de passe (et risquer de casser le hash), vous créez un nouvel admin proprement. Pensez à supprimer ce compte temporaire une fois votre intervention terminée.

Pour lister les utilisateurs existants :

wp user list --fields=ID,user_login,user_email,roles

Je lance cette commande systématiquement lors d un audit de sécurité. Elle permet de repérer immédiatement les comptes administrateurs surnuméraires ou les adresses email suspectes.

Rechercher-remplacer et migrer un site en 30 secondes

C est LA commande qui justifie à elle seule l apprentissage de WP-CLI. Si vous ne devez en retenir qu une, c est celle-ci.

Commande 8 : wp search-replace

wp search-replace 'https://ancien-domaine.fr' 'https://nouveau-domaine.fr' --all-tables --precise --dry-run

Cette commande remplace toutes les occurrences d une chaîne dans toutes les tables de la base de données, y compris dans les données sérialisées. C est le point crucial : WordPress stocke beaucoup de données sous forme sérialisée (options de thème, widgets, réglages de plugins). Un simple rechercher-remplacer SQL casserait ces données. WP-CLI gère la désérialisation, le remplacement, et la resérialisation automatiquement.

Le flag --dry-run est votre filet de sécurité : il simule l opération et vous montre combien de remplacements seraient effectués, sans rien modifier. Lancez toujours un dry-run d abord.

# Dry run pour vérifier
wp search-replace 'https://dev.monsite.fr' 'https://monsite.fr' --all-tables --precise --dry-run

# Si tout est OK, on lance pour de vrai
wp search-replace 'https://dev.monsite.fr' 'https://monsite.fr' --all-tables --precise

Cas d usage concrets que je rencontre chaque mois :

  • Migration de domaine : le classique, changement de nom de domaine
  • Passage HTTP vers HTTPS : encore courant sur des sites anciens
  • Déplacement de sous-répertoire : /wordpress/ vers la racine
  • Migration local vers production : localhost:8080 vers le domaine final
  • Changement de chemin serveur : quand le /home/user/ change entre hébergeurs

Avant WP-CLI, je faisais ces migrations avec le plugin Duplicator ou manuellement via phpMyAdmin. Un search-replace sur une base de 200 Mo prenait parfois 45 minutes avec Duplicator, timeouts inclus. Avec WP-CLI, c est 30 secondes, même sur une grosse base. Pour approfondir les bonnes pratiques de migration, j en parle aussi dans mon guide sur les sauvegardes WordPress automatiques.

Automatiser les sauvegardes et le nettoyage de base de données

Commande 9 : wp db export

wp db export backup-$(date +%Y%m%d-%H%M).sql

Exporte un dump SQL complet de la base de données. Le fichier généré est un SQL standard que vous pouvez réimporter avec wp db import ou directement via MySQL. Je lance cette commande avant chaque intervention sur un site client. C est mon réflexe numéro un.

Pour les sauvegardes automatiques, je combine WP-CLI avec un cron et rsync. Un script bash simple qui tourne chaque nuit :

#!/bin/bash
SITE_PATH="/var/www/monsite"
BACKUP_DIR="/home/backups/monsite"
DATE=$(date +%Y%m%d)

cd $SITE_PATH
wp db export $BACKUP_DIR/db-$DATE.sql
tar -czf $BACKUP_DIR/files-$DATE.tar.gz wp-content/uploads/
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete

Ce script exporte la base, compresse les uploads, et supprime les sauvegardes de plus de 30 jours. Simple, fiable, gratuit. Pas besoin de plugin de sauvegarde premium à 80 € par an pour ça. J en parle plus en détail dans mon comparatif UpdraftPlus vs BackWPup vs rsync.

Commande 10 : wp transient delete –all

wp transient delete --all

Les transients sont des données temporaires stockées en base par WordPress et ses plugins. Sur un site avec 20 plugins actifs, j ai déjà vu la table wp_options contenir plus de 50 000 transients expirés qui ralentissaient chaque requête. Cette commande fait le ménage en une seconde.

Commande 11 : wp db optimize

wp db optimize

Lance un OPTIMIZE TABLE sur toutes les tables de la base. Sur un site WooCommerce avec des milliers de commandes, ou un blog avec des années de révisions, cette commande peut réduire la taille de la base de 20 à 40 % et améliorer sensiblement les temps de requête.

Pour aller plus loin dans le nettoyage, je supprime aussi les révisions d articles anciennes :

wp post delete $(wp post list --post_type=revision --format=ids) --force

Attention : cette commande supprime toutes les révisions. Sur un site éditorial où le client veut garder un historique, limitez-vous aux révisions de plus de 6 mois avec un filtre sur la date.

Un script de sauvegarde automatique remplace avantageusement les plugins premium
Un script de sauvegarde automatique remplace avantageusement les plugins premium

Créer des scripts WP-CLI réutilisables pour tous vos clients

La vraie puissance de WP-CLI pour un freelance, c est la possibilité de créer des scripts réutilisables. J ai un dossier ~/scripts/ sur mon poste avec une dizaine de scripts que je déploie sur chaque nouveau projet.

Commande 12 : wp eval et wp eval-file

wp eval 'echo get_option("siteurl");'

Cette commande exécute du code PHP dans le contexte WordPress. Incroyablement pratique pour du débogage rapide. Et wp eval-file exécute un fichier PHP complet :

wp eval-file audit-securite.php

Voici mon script d audit que je lance sur chaque nouveau site client :

#!/bin/bash
echo "=== AUDIT WORDPRESS ==="
echo ""
echo "--- Version WordPress ---"
wp core version
echo ""
echo "--- Mises à jour disponibles ---"
wp core check-update
echo ""
echo "--- Plugins actifs ---"
wp plugin list --status=active --fields=name,version,update
echo ""
echo "--- Plugins inactifs (à supprimer ?) ---"
wp plugin list --status=inactive --fields=name,version
echo ""
echo "--- Utilisateurs admin ---"
wp user list --role=administrator --fields=ID,user_login,user_email
echo ""
echo "--- Taille de la base ---"
wp db size --tables
echo ""
echo "--- Constantes de sécurité ---"
wp config get --fields=name,value | grep -E "(DEBUG|DISALLOW_FILE_EDIT|FORCE_SSL)"

Ce script me donne en 10 secondes une photographie complète de l état d un site. Version WordPress, plugins à jour ou non, comptes admin, taille des tables, configuration de sécurité. Je l envoie parfois au client dans mon rapport d audit initial.

Pour les freelances qui gèrent plusieurs sites, je recommande de combiner ces scripts avec un outil comme n8n ou Make pour déclencher les maintenances automatiquement et recevoir un rapport par email.

Commande Usage principal Temps gagné vs back-office Risque
wp core update Mise à jour du cœur WordPress 5 min par site Faible
wp plugin update --all Mise à jour de tous les plugins 3 min par site Moyen (toujours sauvegarder avant)
wp theme update --all Mise à jour des thèmes 2 min par site Faible
wp cache flush Vidage du cache objet 1 min Aucun
wp plugin install --activate Installation et activation d un plugin 3 min Aucun
wp plugin deactivate Désactivation d urgence Variable (critique en cas de site down) Aucun
wp user create Création d un utilisateur admin 2 min Faible (penser à supprimer après)
wp search-replace Migration de domaine 30 à 45 min Élevé (toujours faire un dry-run)
wp db export Sauvegarde de la base de données 5 min Aucun
wp transient delete --all Nettoyage des transients expirés 10 min (vs plugin) Aucun
wp db optimize Optimisation des tables MySQL 5 min Faible
wp eval / wp eval-file Exécution de code PHP custom Variable Élevé (attention au code exécuté)

Les erreurs classiques à éviter avec WP-CLI

Après huit ans d utilisation quotidienne, j ai accumulé quelques cicatrices. Voici les pièges les plus fréquents que je vois chez les freelances qui débutent avec WP-CLI.

Erreur 1 : oublier le –dry-run sur search-replace. Je l ai fait une fois en 2018. Un remplacement incorrect sur une base de production, sans sauvegarde préalable. Trois heures de restauration. Depuis, c est devenu un réflexe conditionné : --dry-run d abord, toujours.

Erreur 2 : lancer WP-CLI en tant que root. Sur un VPS, si vous êtes connecté en root et que vous lancez wp plugin install, les fichiers créés appartiendront à root, pas à www-data. Résultat : WordPress ne pourra plus les modifier depuis le back-office. Utilisez --allow-root uniquement si vous savez ce que vous faites, et préférez sudo -u www-data wp ... pour exécuter les commandes avec le bon utilisateur.

Erreur 3 : ne pas vérifier la version de PHP CLI. Sur certains serveurs, la version de PHP utilisée en ligne de commande est différente de celle du serveur web. Un php -v rapide vous évitera des surprises. Si votre site tourne en PHP 8.2 mais que CLI utilise PHP 7.4, certains plugins ne fonctionneront pas correctement via WP-CLI.

Erreur 4 : ignorer les erreurs silencieuses. WP-CLI ne plante pas toujours bruyamment. Parfois une mise à jour échoue partiellement, et la seule indication est une ligne Warning noyée dans la sortie. Ajoutez --debug quand quelque chose vous semble suspect :

wp plugin update --all --debug

Erreur 5 : utiliser WP-CLI sans sauvegarde. Je me répète, mais c est la règle d or. Avant toute opération qui modifie la base ou les fichiers, un wp db export prend 2 secondes. Ne vous en privez pas. C est d ailleurs un principe que j applique aussi quand j intègre une API externe dans WordPress : toujours pouvoir revenir en arrière.

Pour les questions de sécurité liées à l accès SSH, la CNIL recommande des pratiques strictes d authentification et de gestion des accès serveur. En tant que freelance, vous êtes responsable de la sécurité des accès que vous utilisez chez vos clients. Désactivez l authentification par mot de passe SSH, utilisez des clés, et gardez un registre des accès.

Un dernier point souvent négligé : WP-CLI a son propre fichier de configuration. Créez un fichier wp-cli.yml à la racine de chaque site pour définir des paramètres par défaut :

# wp-cli.yml
path: /var/www/monsite/public
url: https://monsite.fr
user: admin
apache_modules:
  - mod_rewrite

Avec ce fichier, vous n avez plus besoin de spécifier --path ou --url à chaque commande. Un gain de temps supplémentaire, surtout quand vous gérez des installations WordPress sur VPS avec des configurations non standard.

Pour les freelances qui travaillent aussi avec des outils no-code en parallèle de WordPress, comme je le fais avec Bubble, Framer ou Webflow, WP-CLI représente un avantage compétitif clair : il montre à vos clients que vous maîtrisez WordPress à un niveau technique que les page builders seuls ne permettent pas d atteindre.

Côté facturation, j inclus toujours WP-CLI dans mes devis et contrats freelance. Je mentionne explicitement que la maintenance sera réalisée via des outils en ligne de commande, ce qui justifie à la fois la rapidité d exécution et le niveau d expertise facturé.

Enfin, si vous utilisez un IDE avec IA comme Cursor ou Claude Code, sachez que ces outils peuvent générer des commandes WP-CLI à partir de descriptions en langage naturel. Un gain de productivité supplémentaire pour les commandes complexes qu on utilise rarement.

À retenir

  • Commencez par maîtriser 4 commandes : wp core update, wp plugin update --all, wp db export et wp search-replace, elles couvrent 80 % des besoins
  • Lancez toujours un wp db export avant toute opération de mise à jour ou de modification en base de données
  • Utilisez systématiquement le flag --dry-run sur wp search-replace avant le remplacement réel
  • Exécutez WP-CLI avec l utilisateur www-data (sudo -u www-data wp ...), jamais en root directement
  • Créez un script bash d audit réutilisable et lancez-le sur chaque nouveau site client : 10 secondes pour un diagnostic complet

Questions fréquentes


Comment installer WP-CLI sur un hébergement mutualisé sans accès root ?

Téléchargez le fichier wp-cli.phar dans votre espace utilisateur, rendez-le exécutable avec chmod +x, et ajoutez son emplacement à votre variable PATH dans ~/.bashrc. Chez o2switch et Infomaniak, WP-CLI est déjà préinstallé. Chez OVH mutualisé, il faut un accès SSH disponible sur les offres Pro et Performance. Vérifiez aussi que la version de PHP CLI correspond à celle de votre site.


WP-CLI fonctionne-t-il avec les plugins premium comme Elementor ou WP Rocket ?

Oui, WP-CLI fonctionne avec tous les plugins WordPress, y compris les plugins premium. Certains comme WP Rocket, WooCommerce ou Yoast SEO proposent même leurs propres commandes WP-CLI dédiées. Par exemple, wp rocket activate-deactivate pour WP Rocket ou wp wc order list pour WooCommerce. Les plugins premium doivent être installés manuellement depuis un fichier zip avec wp plugin install ./plugin.zip --activate puisqu ils ne sont pas sur le dépôt officiel WordPress.


Est-ce que wp search-replace peut casser un site WordPress ?

Oui, si vous l utilisez sans précaution. Un remplacement incorrect dans les données sérialisées peut rendre un site inutilisable. C est pourquoi il faut toujours procéder en trois étapes : exporter la base avec wp db export, lancer un --dry-run pour vérifier le nombre de remplacements prévus, puis exécuter la commande réelle seulement si le dry-run est cohérent. En cas de problème, vous pouvez restaurer avec wp db import en quelques secondes.


Peut-on automatiser WP-CLI avec un cron pour la maintenance de plusieurs sites ?

Absolument, c est même l un des usages les plus puissants pour un freelance. Créez un script bash qui boucle sur les répertoires de vos sites, lance les mises à jour et les sauvegardes, puis planifiez-le avec un cron quotidien ou hebdomadaire. J utilise un script qui exporte la base, met à jour les plugins, vide les transients et m envoie un rapport par email via mail ou un webhook. Comptez 30 minutes pour mettre en place le système, et il tourne ensuite sans intervention.


WP-CLI est-il sécurisé pour une utilisation en production ?

WP-CLI est un outil officiel maintenu par la communauté WordPress et utilisé en production par des entreprises comme Automattic (WordPress.com). Il est aussi sécurisé que WordPress lui-même. Les précautions à prendre sont celles de tout accès SSH : utiliser des clés SSH plutôt que des mots de passe, restreindre les utilisateurs autorisés, et ne jamais exécuter WP-CLI en tant que root. En tant que freelance, documentez les accès SSH dans votre registre de sécurité pour rester conforme aux recommandations de la CNIL.


Quelles alternatives à WP-CLI existent pour gérer WordPress en ligne de commande ?

Il n y a pas de véritable alternative directe à WP-CLI pour la gestion en ligne de commande. Certains outils comme ManageWP ou MainWP proposent une gestion centralisée multi-sites via une interface web, mais sans la flexibilité du terminal. Pour les déploiements, des outils comme Deployer ou Ansible peuvent compléter WP-CLI. En pratique, WP-CLI reste le standard incontesté depuis plus de 10 ans, et la documentation officielle sur developer.wordpress.org couvre plus de 40 commandes natives.


Thomas Lefèvre
Thomas Lefèvre

Thomas Lefèvre est développeur freelance full-stack à Paris depuis 2015, spécialisé WordPress sur mesure, no-code (Bubble, Webflow, Make) et SEO technique. Ex-OpenClassrooms, intervenant ponctuel à l école 42, il documente sur Synergie.Web les outils, techniques et vrais coûts du web freelance en France, testés sur de vrais projets clients.