Ce guide a été rédigé pour Linux et nécessite d’être (un peu) à l’aise avec le Terminal
L’installation de Wordpress nécessite normalement tout un tas d’étapes: extraire l’archive, éditer le fichier de conf, poursuivre l’installation dans le navigateur pour enfin cliquer un peu partout pour retrouver les plugins, thèmes et réglages que l’on souhaite. Pfiou !
C’est laborieux, et peut mener à des erreurs.
C’est ici que la ligne de commande s’avère utile : la création d’un petit script permet d’automatiser toutes ces étapes, et d’installer en quelques secondes un Wordpress tout frais avec les plugins, thèmes et paramètres désirés.
Sans plus attendre, une démonstration en image :
Une fois le script exécuté, un serveur est lancé et donne accès à un Wordpress avec:
- le thème souhaité, il est même possible de créer un thème enfant à la volée.
- les plugins sélectionnés, qu’il est possible d’activer automatiquement ou non.
- création automatique d’auteur·es et de contenu.
- certains réglages peuvent également être préconfigurés, comme la structure des URLs, la taxonomie, l’affichage d’une page à la Une, le contenu des menus, et j’en passe
Super, comment on fait?
Première étape, l’installation de Wp-cli.
Ensuite, personnalisation et mise en place du script.
Enfin, petite visite guidée des fonctionnalités et de la documentation.
Installer wp-cli
Pour commencer, on télécharge la dernière version :
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
On rends ensuite le script exécutable :
chmod +x wp-cli.phar
On rend cet exécutable accessible depuis n’importe quel dossier :
sudo mv wp-cli.phar /usr/local/bin/wp
Pour finir, petit test pour s’assurer que tout fonctionne:
wp --info
En cas d’erreur /usr/bin/env: « php »: Aucun fichier ou dossier de ce type
, on prend le temps d’installer php
:
sudo apt install php7.3 php7.3-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
puis on relance wp --info
pour vérifier
On installe aussi MariaDB
, qui gère la base de données de la même manière que mysql
:
sudo apt install default-mysql-server
sudo mysql_secure_installation
Premiers pas avec Wp-cli
Une fois que vous avez installé Wp-cli, de nombreuses possibilités s’offrent à vous.
Vous pouvez par exemple installer un Wordpress avec cette série de commandes:
Vous avez un doute sur une commande ?
Direction la documentation officielle, en anglais mais très complète et didactique.
wp core download --locale=fr_FR --skip-content --user=wp --path=wp
cd wp
wp config create --dbname=wp --dbuser=root --prompt=dbpass
En cas de problème de permissions à ce stade, consultez les résolutions de problèmes en bas de page
wp db create
wp core install --url=$1.localhost --title="Wp / $1" --admin_user=dev --admin_password=pass --admin_email=dev@example.net --skip-email
wp theme install --activate https://github.com/RoneoOrg/wp-bootstrap-starter/archive/refs/heads/master.zip
wp server
Automatisation à tous les étages
Dans ma situation, seul le nom du projet et de la base données changent d’un site à l’autre. Même thème de base, même plugins, même réglages.
Le script que j’utilise demande donc seulement de fournir le nom du projet, et se lance avec la commande wpinstall nom-du-projet
. Ce nom est utilisé pour créer le dossier et nommer le site.
Le nom de la base de données est ensuite demandé. Et c’est tout, tout le reste est automatisé
Voici le script en question ( je l’explique en détails un peu plus bas):
wpinstall ()
{
wp core download --path="$1" --locale=fr_FR --skip-content ;
cd "$1" || exit;
read -rp 'Veuillez entrer le nom de la base de données:' dbname;
wp config create --dbname="$dbname" --dbuser=root --dbpass=pass --dbhost=localhost --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
PHP
wp db create;
wp core install --url="$1".localhost --title="Wp / $1" --admin_user=dev --admin_password=pass --admin_email=dev@example.net --skip-email
wp theme install --activate https://github.com/RoneoOrg/wp-bootstrap-starter/archive/refs/heads/master.zip
wp plugin install wordpress-seo contact-form-7
wp option update blog_public 0
wp language core update
echo -e "\e[1m\e[33mWarning:\e[0m Debug mode is ON";
echo -e "\e[1m\e[33mWarning:\e[0m Plugins was installed but require your manual activation";
wp server
}
Explication de texte
Les commandes relatives à wp-cli
sont bien documentées, je vous laisse
consulter la doc, et j’explique ici la partie Bash:
wp core download --path="$1"
: On télécharge Wordpress dans le dossier dont le nom a été précisé dans la commande, qu’on a donné aprèswpinstall
read -rp
: Le script demande de préciser le nom de la base de données--extra-php <<PHP
: On ajoute du PHP personnalisé dans le fichierwp-config.php
define(
: Petite subtilité: ces ligne de PHP ne doivent pas être précédées d’une tabulation ou d’espace vide. Pas d’indentation donc.echo -e "\e[1m
: On affiche quelques rappels (en couleur, d’où la syntaxe sibylline)
Jetez un œil à ce générateur pour wp-cli, créé par Tim Brugman.
Mise en place du script
Ce script doit être placé dans votre fichier bashrc
:
nano ~/.bashrc
Coller le script en prenant soin de modifier
--dbuser=root
--dbpass=pass
- les lignes
wp theme
etwp plugin
Quittez ensuite l’éditeur Nano avec Ctrl + X
(validez une première fois avec O
, puis une seconde fois pour le nom du fichier).
Rechargez enfin le fichier bashrc
:
source ~/.bashrc
C’est parti ! Vous pouvez faire un premier test en tapant la commande wpinstall test
Voilà, vous avez une base fonctionnelle et vous pouvez maintenant aller plus loin.
Aller plus loin
Vous trouverez de nombreux usages dans la doc, et de grandes quantités de packages sont disponibles sur Github.
Voici quelques outils qui ont retenu mon attention :
Mettre en place de l’autocompletion
Avant d’aller plus loin, autant se mettre bien avec la completion automatique des commandes
Lister les options modifiables
wp option list
Création d’un thème enfant
wp scaffold child-theme example.org --parent_theme=wp-bootstrap-starter --theme_name=example.org --author=example.org --author_uri=example.org --theme_uri=example.org --activate
Générer des articles de test
wp post create --post_type=page --post_title='Accueil' --post_status=publish
ou plus efficace encore
curl http://loripsum.net/api/5/headers/ul/link/bq | wp post generate --post_type=post --post_content --count=10
Voir également wp-cli-fixtures pour générer des articles contenant des images et des vidéos (de nombreuses dépendances doivent être installées)
Il est également possible de créer un nouvel article et d’importer du contenu directement depuis un fichier .txt :
wp post create ./post.txt --post_title='Exemple d’article' --post_status=publish
Une page statique à la Une
wp option update page_on_front 9
wp option update show_on_front page
Détecter les instances Wordpress présentes sur le disque dur
Affiche le chemin et la version de Wordpress installée, pratique pour savoir si des mises à jour sont nécessaires
wp package install wp-cli/find-command
wp find .
Afficher les mises à jour disponibles
wp core check-update && wp plugin list --update=available && wp theme list --update=available
Tester la sécurité de son installation
Avec wp-cli/doctor
wp package install wp-cli/doctor-command
wp doctor check --all
Afficher les tâches planifiées
wp cron event list
Export / import de la BDD
wp db export
wp db import file.sql
Générer des comptes
wp user generate --count=5 --role=editor
Mettre à jour tous les plugins
wp plugin update --all
Supprimer les révisions
wp post delete $(wp post list --post_type='revision' --format=ids)
Résolution de problème
Problème de permission “Access denied for user ‘root’@’localhost’
wp config create --dbname=wp --dbuser=root --prompt=dbpass
1/11 [--dbpass=<dbpass>]: dbpass
wp config create --dbname='wp' --dbuser='root' --dbpass='dbpass' --dbhost='localhost' --dbprefix='wp_' --dbcharset='utf8' --dbcollate=''
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Solution :
sudo mysql
MariaDB [(none)]> use mysql;
MariaDB [mysql]> update user set plugin='' where user='root';
MariaDB [mysql]> SELECT User, Host, plugin FROM mysql.user;
MariaDB [mysql]> flush privileges;
Ctrl+C pour quitter
sudo service mysql restart
Aller (encore) plus loin
- Administration à distance: voir Kinsta.com et la doc officielle
- Optimize pictures for Wordpress from command-line
- Liste des packages disponibles
- Internationaliser un thème
- Configurer les paramètres via un ficher YAML
- Installer les plugins à partir d’une liste dans un fichier
- WP-CLI - advanced examples
- Automatiser la gestion de WordPress avec WP-CLI sous Windows - New Slang
- Moderate WordPress comments with WP-CLI
- Manage WP Rocket from wp-cli
- schlessera/awesome-wp-cli #TODO:TEST
- WordMove, un projet similaire à wp-cli #TODO:TEST