Créer un site multilingue WordPress peut rapidement devenir un véritable casse-tête entre la configuration des plugins, la gestion des langues et le déploiement. Heureusement, WP-CLI transforme cette tâche fastidieuse en un processus entièrement automatisé grâce à quelques scripts bien pensés. Dans cet article, je vous montre comment orchestrer l’ensemble de votre workflow multilingue depuis la ligne de commande.
Les fondamentaux de l’automatisation WordPress CLI pour sites multilingues
L’automatisation de sites WordPress multilingues via WP-CLI représente un gain de temps considérable pour les développeurs. En effet, cette approche permet de standardiser les déploiements tout en garantissant une cohérence entre les différentes versions linguistiques de vos projets.
Installation et configuration de WP-CLI pour les projets multilingues
Avant de vous lancer, assurez-vous que votre système dispose des prérequis nécessaires : PHP 7.4 minimum, Composer installé et un serveur web fonctionnel. L’installation de WP-CLI s’effectue via une simple commande curl :
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
Une fois installé, testez votre configuration avec wp --info. Pour les projets multilingues, je recommande fortement de créer un fichier wp-cli.yml à la racine de votre projet. Ce fichier contiendra vos paramètres par défaut et facilitera la gestion des langues multiples.
Création d’un environnement de développement adapté
Pour structurer efficacement vos projets multilingues, adoptez une organisation claire dès le départ. Créez un dossier dédié avec des sous-répertoires pour chaque langue si nécessaire :
mon-projet-multilingue/
├── wp-config.php
├── wp-cli.yml
├── scripts/
│ ├── setup-languages.sh
│ └── deploy.sh
└── languages/
Les variables d’environnement jouent un rôle crucial ici. Définissez WP_CLI_CONFIG_PATH pour pointer vers votre fichier de configuration personnalisé. Cependant, attention aux chemins absolus qui peuvent poser des problèmes lors du déploiement sur différents environnements !
Gestion des langues avec les commandes de base
La magie opère vraiment avec les commandes wp language. Pour installer un pack de langue, utilisez :
wp language core install fr_FR
wp language core install es_ES
wp language core install de_DE
Pour activer une langue spécifique comme langue par défaut :
wp language core activate fr_FR
Mais voici un point important que beaucoup négligent : ces commandes ne gèrent que les langues du core WordPress. Pour les thèmes et plugins, vous devrez utiliser respectivement wp language theme et wp language plugin. Par ailleurs, n’oubliez pas de vérifier les langues disponibles avec wp language core list --available avant de procéder à l’installation.
Intégration et automatisation des plugins multilingues via CLI
L’automatisation des plugins multilingues représente un véritable gain de temps pour les développeurs WordPress. En effet, configurer manuellement Polylang ou WPML sur plusieurs sites peut s’avérer fastidieux ; c’est pourquoi WP-CLI devient indispensable dans ce contexte. Voyons comment tirer parti de ces outils pour créer des flux de déploiement efficaces.
Configuration automatisée de Polylang avec WP-CLI
Pour automatiser Polylang, nous devons d’abord installer le package spécialisé : wp package install diggy/polylang-cli. Ce package étend WP-CLI avec des commandes dédiées au multilinguisme.
La création de langues devient alors simplissime :
wp pll lang create fr french "Français" fr_FR
wp pll lang create en english "English" en_US
wp pll lang create es spanish "Español" es_ES
Pour gérer les contenus, la commande wp pll post permet d’associer les traductions : wp pll post create --post_id=123 --lang=fr --translation_of=456. Cette approche programmatique évite les erreurs de manipulation manuelle et garantit la cohérence des associations linguistiques.
Intégration WPML pour les déploiements automatisés
WPML propose une approche différente avec ses propres commandes CLI. L’export/import de configurations devient possible grâce à wp wpml export-config et wp wpml import-config config.json.
Cependant, attention ! WPML nécessite une licence valide pour fonctionner correctement. Je recommande de configurer les clés API dans vos scripts de déploiement :
wp option update wpml_site_key "votre-cle-site"
wp plugin activate wpml-*
La synchronisation des métadonnées s’effectue via wp wpml sync-custom-fields, particulièrement utile pour maintenir la cohérence entre les versions linguistiques de vos contenus personnalisés.
Scripts d’installation et de paramétrage des extensions multilingues
Voici un exemple de script bash complet pour automatiser l’installation de Polylang :
#!/bin/bash
# Installation et configuration Polylang
wp plugin install polylang --activate
wp package install diggy/polylang-cli
# Création des langues
wp pll lang create fr french "Français" fr_FR --flag=fr
wp pll lang create en english "English" en_US --flag=us
# Configuration des menus multilingues
wp pll menu create "Menu principal" --lang=fr
wp pll menu create "Main menu" --lang=en
Pour les taxonomies personnalisées, utilisez wp pll tax sync category afin de synchroniser automatiquement les termes entre langues. Cette commande s’avère particulièrement utile lors de la migration de sites existants vers une architecture multilingue.
En résumé, ces scripts permettent de standardiser vos déploiements multilingues et de réduire considérablement les erreurs humaines lors de la configuration.
Scripts de déploiement et maintenance automatisés pour environnements multilingues
La gestion d’un site WordPress multilingue en production nécessite des processus de déploiement robustes et automatisés. Une fois que vous avez configuré votre environnement avec WP-CLI et vos plugins multilingues, il devient essentiel de mettre en place des scripts qui garantissent la cohérence et la fiabilité de vos déploiements.
Script complet de création d’installations WordPress multilingues
Voici un script bash qui automatise entièrement la création d’une nouvelle installation WordPress multilingue :
#!/bin/bash
# Variables de configuration
SITE_NAME=$1
SITE_URL=$2
DB_NAME="${SITE_NAME}_wp"
DB_USER="wp_user"
DB_PASS="secure_password"
# Création de la base de données
mysql -u root -p -e "CREATE DATABASE ${DB_NAME};"
# Installation WordPress
wp core download --path="/var/www/${SITE_NAME}"
cd "/var/www/${SITE_NAME}"
wp config create --dbname="${DB_NAME}" --dbuser="${DB_USER}" --dbpass="${DB_PASS}"
wp core install --url="${SITE_URL}" --title="${SITE_NAME}" --admin_user="admin" --admin_email="admin@${SITE_NAME}.com"
# Installation et configuration Polylang
wp plugin install polylang --activate
wp pll lang create fr français fr_FR
wp pll lang create en English en_US
wp pll option set default_lang fr
Ce script crée automatiquement une installation complète avec la structure multilingue de base. Il peut être étendu pour inclure vos thèmes et plugins spécifiques.
Gestion des migrations entre environnements de développement
La migration entre environnements (dev → staging → prod) nécessite une attention particulière pour les URLs multilingues :
#!/bin/bash
# Script de migration dev vers production
SOURCE_URL="https://dev.monsite.com"
TARGET_URL="https://monsite.com"
# Export de la base de données
wp db export migration.sql --path="/dev/monsite"
# Operations search-replace pour URLs multilingues
wp search-replace "${SOURCE_URL}/fr" "${TARGET_URL}/fr" --dry-run
wp search-replace "${SOURCE_URL}/en" "${TARGET_URL}/en" --dry-run
wp search-replace "${SOURCE_URL}" "${TARGET_URL}" --dry-run
# Si tout est correct, exécution réelle
wp search-replace "${SOURCE_URL}" "${TARGET_URL}" --path="/prod/monsite"
Les opérations search-replace doivent traiter spécifiquement chaque langue pour éviter les problèmes de liens internes.
Automatisation des sauvegardes et restaurations multilingues
Pour les sites multilingues, les sauvegardes doivent inclure tous les contenus et métadonnées spécifiques aux langues :
#!/bin/bash
# Script de sauvegarde complète
BACKUP_DIR="/backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "${BACKUP_DIR}"
# Sauvegarde base de données
wp db export "${BACKUP_DIR}/database.sql"
# Sauvegarde fichiers uploads (incluant traductions)
tar -czf "${BACKUP_DIR}/uploads.tar.gz" wp-content/uploads/
# Sauvegarde configurations Polylang/WPML
wp option get polylang > "${BACKUP_DIR}/polylang_config.json"
wp pll lang list --format=json > "${BACKUP_DIR}/languages.json"
# Notification de succès
echo "Sauvegarde créée dans ${BACKUP_DIR}"
La restauration suit le processus inverse en important d’abord la base, puis les fichiers, et enfin en vérifiant la cohérence des configurations multilingues.
Scripts de mise à jour coordonnées et synchronisation
Les mises à jour sur un site multilingue doivent être coordonnées pour maintenir la cohérence :
#!/bin/bash
# Mise à jour complète coordonnée
echo "Début de la mise à jour multilingue..."
# Mise en maintenance
wp maintenance-mode activate
# Mise à jour du core WordPress
wp core update
# Mise à jour des plugins multilingues
wp plugin update polylang wpml-*
# Mise à jour des packs de langue
wp language core update
wp language plugin update --all
# Vérification de l'intégrité
wp pll doctor
# Fin de maintenance si tout va bien
if [ $? -eq 0 ]; then
wp maintenance-mode deactivate
echo "Mise à jour terminée avec succès"
else
echo "Erreur détectée, site en maintenance"
fi
Cette approche minimise les risques d’incohérence pendant les mises à jour.
Optimisation et maintenance automatisées
Les tâches de maintenance doivent prendre en compte les spécificités multilingues :
#!/bin/bash
# Script de maintenance hebdomadaire
echo "Début de la maintenance multilingue..."
# Nettoyage de la base de données
wp db clean --yes
wp transient delete --all
# Optimisation spécifique aux contenus multilingues
wp pll cache flush
wp cache flush
# Vérification de la cohérence des traductions
wp pll check --format=table
# Optimisation des tables
wp db optimize
echo "Maintenance terminée"
Ces scripts peuvent être programmés via cron pour s’exécuter automatiquement.
Intégration CI/CD et hooks de déploiement
L’intégration avec des systèmes CI/CD permet d’automatiser complètement le processus :
# Exemple de workflow GitHub Actions
name: Deploy Multilingual WordPress
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy to production
run: |
wp --ssh=user@server core update
wp --ssh=user@server plugin update polylang
wp --ssh=user@server language core update
wp --ssh=user@server pll cache flush
Cette approche garantit que chaque modification de code déclenche automatiquement un déploiement cohérent sur tous les environnements multilingues.
