Facilitez la maintenance avec WP-CLI

Utilisez WP-CLI sur votre hébergement Ethersys

Une erreur, un problème ou une simple demande d'information ?
Vous pouvez nous contacter !

Introduction

WP-CLI (WordPress Command Line Interface) vous permet de gérer votre WordPress via la ligne de commande. Découvrons ici son incroyable puissance et pourquoi nous vous recommandons chaudement de l’installer.

Pourquoi utiliser WP-CLI ?

Si vous êtes familier du bash, vous apprécierez pouvoir maintenir votre WordPress en ligne de commande, soit bien plus rapidement qu’au travers l’espace d’administration. De plus, comme nous le verrons plus bas, qui dit bash dit script, et donc automatisation.

Installation de WP-CLI au sein de votre hébergement Ethersys

Téléchargez WP-CLI :

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Rendez WP-CLI exécutable :

chmod +x wp-cli.phar

Déplacez WP-CLI dans un répertoire personnel :

mv wp-cli.phar ~/bin/wp

Ajoutez le répertoire à la variable PATH : Ajoutez cette ligne dans votre fichier .bashrc ou .zshrc :

export PATH=$PATH:~/bin

Rechargez ensuite la configuration :

source ~/.bashrc

Testez l’installation :

wp --info

Commandes de base

Vérifier la version de WordPress

wp core version

Résultat attendu :

6.7

Mettre à jour WordPress

wp core update

Résultat attendu :

Downloading WordPress 6.7 (fr_FR)...
Success: WordPress updated successful

Gestion des Plugins

Lister les plugins installés

wp plugin list

Résultat attendu :

+-------------------+----------+-----------+---------+
| name              | status   | update    | version |
+-------------------+----------+-----------+---------+
| akismet           | active   | available | 5.2.1   |
| wordpress-seo     | inactive | none      | 21.1    |
| woocommerce       | active   | none      | 7.4.1   |
+-------------------+----------+-----------+---------+

Installer un plugin

Pour installer Yoast SEO :

wp plugin install wordpress-seo

Résultat attendu :

Installing WordPress SEO by Yoast (21.1)...
Downloading install package from https://downloads.wordpress.org/plugin/wordpress-seo.21.1.zip...
Unpacking the package...
Installing the plugin...
Success: Plugin installed successfully.

Activer et désactiver un plugin

Pour activer Yoast SEO :

wp plugin activate wordpress-seo

Résultat attendu :

Success: Plugin 'wordpress-seo' activated.

Pour le désactiver :

wp plugin deactivate wordpress-seo

Résultat attendu :

Success: Plugin 'wordpress-seo' deactivated.

Gestion des Thèmes

Installer un thème

wp theme install twentytwentythree

Résultat attendu :

Installing Twenty Twenty-Three (1.3)...
Unpacking the package...
Installing the theme...
Success: Theme installed successfully.

Activer un thème

wp theme activate twentytwentythree

Résultat attendu :

Success: Switched to 'Twenty Twenty-Three' theme.

Export et Import de la Base de Données

Exporter la base de données

wp db export mydatabase.sql

Résultat attendu :

Success: Exported to 'mydatabase.sql'.

Importer une base de données

wp db import mydatabase.sql

Résultat attendu :

Success: Imported from 'mydatabase.sql'.

Exécution de Requêtes de Recherche et Remplacement

Pour remplacer l’URL de l’ancien site par la nouvelle :

wp search-replace 'https://ancien-site.com' 'https://nouveau-site.com'

Résultat attendu :

+---------------------+--------------+--------------+
| Table               | Replacements | Updates      |
+---------------------+--------------+--------------+
| wp_options          | 5            | 5            |
| wp_posts            | 12           | 12           |
| wp_postmeta         | 3            | 3            |
+---------------------+--------------+--------------+
Success: Made 20 replacements.

Regénération des Miniatures

wp media regenerate --yes

Résultat attendu :

Found 15 images to regenerate.
1/15 Regenerated thumbnail for "image1.jpg" (ID 45).
2/15 Regenerated thumbnail for "image2.jpg" (ID 46).
...
Success: Regenerated 15 of 15 images.

Automatisation de la maintenance WordPress avec WP-CLI

Voici un exemple de script utile pour toute personne maintenant fréquemment un voire plusieurs sites WordPress. Ce script intègre toutes les opérations courantes de maintenance WordPress, tout en vérifiant que les mises à jour ou suppressions sont possibles avant de les exécuter.

Script : maintenance.sh

#!/bin/bash

# ==============================================================================
# SCRIPT DE MAINTENANCE WORDPRESS
# Compatibility: WordPress 7.x & WP-CLI 2.x
# ==============================================================================

# Variables
WP_PATH="/chemin/vers/votre/wordpress" # À adapter à votre environnement
LOG_FILE="maintenance_log.txt"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

# Initialisation du journal (redirection propre block par block)
exec > >(tee -a "$LOG_FILE") 2>&1

echo "========================================="
echo "=== Maintenance du $DATE ==="
echo "========================================="

# Vérification du répertoire WordPress
if [ ! -d "$WP_PATH" ]; then
    echo "[RETOUR] Erreur : Répertoire introuvable ($WP_PATH)."
    exit 1
fi

cd "$WP_PATH" || exit 1

# Vérification de l'installation WordPress
if ! wp core is-installed; then
    echo "[ERREUR] WordPress n'est pas installé dans ce répertoire."
    exit 1
fi

# 1. Mise à jour du Core
echo "[INFO] Vérification des mises à jour du core WordPress..."
wp core update
wp core update-db

# 2. Mise à jour des Plugins
echo "[INFO] Mise à jour des plugins..."
wp plugin update --all

# 3. Mise à jour des Thèmes
echo "[INFO] Mise à jour des thèmes..."
wp theme update --all

# 4. Nettoyage des Transients (Supprime tout sauf les plus récents / actifs via WP-CLI)
echo "[INFO] Nettoyage des transients obsolètes..."
# Note : WP-CLI nettoie nativement les transients expirés de manière sécurisée.
wp transient delete --expired

# 5. Nettoyage des Révisions (Optimisé pour WP 7.x)
echo "[INFO] Nettoyage des révisions (conservation des 5 dernières par contenu)..."
# Utilisation d'une commande SQL directe via WP-CLI pour éviter les boucles Bash lourdes et instables
wp db query "
DELETE r FROM \`wp_posts\` r
INNER JOIN (
    SELECT ID, post_parent,
           ROW_NUMBER() OVER (PARTITION BY post_parent ORDER BY post_date DESC) as rn
    FROM \`wp_posts\`
    WHERE post_type = 'revision'
) tmp ON r.ID = tmp.ID
WHERE tmp.rn > 5;
"

# 6. Optimisation de la Base de Données
echo "[INFO] Optimisation de la base de données..."
wp db optimize

# 7. Régénération des miniatures (Seulement pour les images manquantes)
echo "[INFO] Régénération des miniatures (uniquement manquantes)..."
# Ajout du flag --only-missing pour éviter de saturer les I/O du serveur inutilement à chaque maintenance
wp media regenerate --yes --only-missing

echo "[INFO] Maintenance terminée avec succès le $(date '+%Y-%m-%d à %H:%M:%S') !"

Description du Script

  1. Pré-vérifications :
    • Vérifie si WordPress est installé dans le chemin indiqué.
    • Journalise chaque opération dans un fichier pour un suivi précis.
  2. Mises à jour :
    • Met à jour WordPress (core, plugins, thèmes) uniquement si des mises à jour sont disponibles.
  3. Nettoyages :
    • Supprime les transients sauf les 5 derniers.
    • Efface les anciennes révisions d’articles et garde les 5 dernières.
  4. Optimisation de la base de données :
    • Améliore les performances via wp db optimize.
  5. Régénération des miniatures :
    • Recrée les tailles d’images nécessaires pour éviter les problèmes d’affichage.

Exécution du Script

  1. Sauvegardez le script sous le nom maintenance.sh
  2. Rendez-le exécutable :
    chmod +x maintenance.sh 
    
  3. Lancez-le :
    ./maintenance.sh
    

Pour finir

Nous avons rédigé cette page après notre article WP-CLI : Optimisez la gestion de WordPress en ligne de commande. Si vous avez d’autres suggestions à proposer concernant l’usage de WP-CLI, faites-le nous savoir !