WP CLI est un outil très puissant, et quasi incontournable si vous travaillez avec WordPress. C’est un outil en ligne de commande qui permet de faire de très nombreuses opérations simplement, depuis votre terminal. Vous pouvez mettre à jour votre installation, vos thèmes, vos extensions, en installer de nouvelles, les activer ou désactiver, et bien plus encore !

Dans le premier article de la série, on a vu comment installer WP CLI et comment l’utiliser pour gérer les mises à jour de notre site WordPress.

Dans cet article, on va explorer un peu plus les possibilités de l’outil et voir comment il peut nous aider à gérer le contenu de nos sites.

Honnêtement, gérer son contenu via WP CLI est moins courant ou pratique que depuis l’administration de WordPress mais je suis sûr que vous serez tout de même surpris des possibilités offertes et de leur simplicité.

Gérer les publications

WP CLI permet d’interagir directement avec les articles et autres publications de notre site.

Ouvrez un terminal et utilisez la commande suivante. Attention, pour rappel, si vous utilisez Local By Flywheel ou un outil similaire, utilisez le bouton Site Shell pour ouvrir votre terminal directement dans le bon environnement et le bon dossier.

$ wp post list
Capture d'écran du résultat de wp post list
`wp post list` liste les posts du site

Vous pouvez aussi passer des arguments similaires à ceux d’une WP_Query classique. Par exemple, l’argument --post-type permet de spécifier le type de publication.

$ wp post list --post_type=page
Capture d'écran du résultat de wp post list --post_type=page
`–post_type` permet de spécifier le type de publication

Toutes les opérations simples sont possibles avec WP CLI : créer avec wp post create, mettre à jour avec wp post update et supprimer avec wp post delete. Il suffit juste de passer l’identifiant du post que vous voulez mettre à jour ou supprimer.

# Crée un post
$ wp post create --post_title="Example post"
Success: Created post 74.

# Mets à jour le statut du post
$ wp post update 74 --post_status=publish
Success: Updated post 74.

# Mets à jour le slug du post
$ wp post update 74 --post_name="example"
Success: Updated post 74.
Capture d'écran du résultat de wp post update
`wp post` permet de créer, mettre à jour et supprimer des publications

Gérer les métadonnées et termes de taxonomie des publications

Vous pouvez aussi affecter des termes de taxonomies ou des métadonnées avec les paramètres --tax-input et --meta-input de la commande wp post update. C’est un peu plus compliqué car il faut passer une représentation JSON d’un tableau.

# Mettre à jour les métadonnées du post
$ wp post update 74 --meta_input='{"example_meta":"example-value"}'
Success: Updated post 74.

# Lister les métadonnées du post
$ wp post meta list 74
Capture d'écran du résultat de wp post update --meta-input
`wp post` permet de mettre à jour les métadonnées

Fournir un JSON pour les taxonomies et métadonnées n’est vraiment pas pratique. On peut à la place utiliser la série de sous-commandes sous wp post meta pour plus facilement manipuler les métadonnées.

Comme wp post, on dispose de toutes les opérations de base : wp post meta list pour lister toutes les métadonnées, wp post meta get pour récupérer une valeur, wp post meta add ou wp post meta set pour spécifier une valeur, wp post meta update pour mettre à jour et wp post meta delete pour supprimer.

De la même façon, on dispose des équivalents wp post term list pour lister les termes de taxonomies d’une publication, wp post term add pour ajouter un terme de taxonomie à une publication et wp post term remove pour supprimer un terme.

# Liste les catégories disponibles
$ wp term list category

# Liste les catégories du post 74
$ wp post term list 74 category

# Ajoute 'categorie-2' aux termes du post 74
$ wp post term add 74 category categorie-2
Capture d'écran du résultat de wp post term add
`wp post term` permet de mettre à jour les termes de taxonomie

Mettre à jour des publications en masse

Il faut avouer que manipuler les termes et métadonnées des publications en ligne de commande n’est pas très pratique. Si c’est pour mettre à jour une seule publication, autant aller l’éditer dans l’administration tout simplement.

Par contre, si vous devez affecter une catégorie ou une métadonnée en masse à plusieurs publications alors WP CLI peut vraiment vous aider.

La première étape est de générer la liste des IDs à modifier. Vous pouvez utiliser la commande wp post list en passant le paramètre --format=ids pour cela.

# Liste les ids des pages
$ wp post list --post_type=page --format=ids
23 19 20 21 22 3 2 $

Puis on peut injecter ces ids comme paramètres dans wp post update pour mettre à jour toutes nos pages.

$ wp post update $(wp post list --post_type=page --format=ids) --meta_input='{"foo":"bar"}'
Capture d'écran du résultat de post update en masse
`wp post` permet aussi de mettre à jour plusieurs publications

Attention ici, cela ne marche que parce que wp post update peut prendre une liste d’identifiants. Pour faire la même chose avec wp post meta update, il faudra utiliser la commande xargs pour passer la sortie de la commande wp post list à wp post meta update, car cette dernière ne prend qu’un seul id. Selon les commandes, ce sera donc plus ou moins compliqué.

Gérer les termes de taxonomie

WP CLI permet aussi de gérer les termes de taxonomies à l’aide de wp term. Le principe et le fonctionnement sont exactement le même que ceux de wp post et wp post meta.

# Lister les catégories
$ wp term list category

# Créer une catégorie
$ wp term create category Example --description="Example category"

# Récupérer une catégorie
$ wp term get category 19

# Mettre à jour une catégorie
$ wp term update category 19 --name=Example Category
Success: Term updated.

# Supprimer une catégorie
$ wp term delete category 19
Success: Deleted category 19.
Capture d'écran du résultat de wp term create
`wp term` permet de gérer les termes de taxonomie

Gérer les utilisateurs

De la même façon, vous pouvez gérer vos utilisateurs simplement avec les mêmes sous-commandes que wp term et wp post.

# Créer un utilisateur
$ wp user create example example@example.com --role=editor
Success: Created user 4.
Password: iFqpONwR^yPT6toX0Ld1o$(i

# Mettre à jour un utilisateur
$ wp user update 4 --display_name=FooBar
Success: Updated user 4.


# Supprimer l'utilisateur 4
$ wp user delete 4
Success: Removed user 4 from https://example.local.
Capture d'écran du résultat de wp user create
`wp user` permet de gérer les utilisateurs

Vous pouvez aussi gérer les métadonnées des utilisateurs avec wp user meta, et même importer des utilisateurs depuis un CSV avec wp user import-csv.

Aussi, parmi les commandes de WP CLI les plus utiles nous disposons de wp user reset-password pour générer un nouveau mot de passe et envoyer une notification à un utilisateur, et wp user add-role, wp user remove-role, wp user add-cap et wp user remove cap pour ajouter/enlever des rôles et capacités aux utilisateurs.

Gérer les médias

La gestion des médias est intéressante car vous pouvez importer des médias, les assigner aux publications mais surtout régénérer vos miniatures.

# Importe l'image situé dans le dossier Téléchargements et l'assigne au post 74 en tant qu'image mise en avant
wp media import ~/Téléchargements/carcassonne.jpg --post_id=74 --title="Carcassonne" --featured_image

# Régénère les tailles d'images
wp media regenerate

Importer ou exporter votre contenu

Vous pouvez exporter ou importer votre contenu comme si vous utilisiez l’outil d’import/export de WordPress.

# Exporter tout le contenu, et générer le fichier xml là ou la commande est exécutée
$ wp export
Starting export process...
Writing to file /home/vincent/Local Sites/example/app/public/example.wordpress.2025-02-03.000.xml
Success: All done with export.

# Exporter uniquement les articles dans mon dossier exports
$ wp export --dir=exports/ --post_type=post
Starting export process...
Writing to file exports/example.wordpress.2025-02-03.000.xml
Success: All done with export.

# Exporter des posts spécifiques
$ wp export --post__in=1,74
Starting export process...
Writing to file /home/vincent/Local Sites/example/app/public/example.wordpress.2025-02-03.000.xml
Success: All done with export.

De la même façon, vous pouvez importer un fichier d’export. Par contre, il faut installer l’importateur de WordPress pour que cela fonctionne.

# Installer l'importeur
$ wp plugin install wordpress-importer --activate

# Importer un xml
wp import example.wordpress.2025-02-03.000.xml --authors=create

Le paramètre --authors va permettre de spécifier comment vous allez gérer les auteurs des contenus importés. create va permettre de les créer s’ils n’existent pas, skip ne va pas créer d’auteurs, et mapping.csv permet de lire le fichier CSV pour remplacer les auteurs. Il doit simplement contenir deux colonnes: old_user_login et new_user_login.

Conclusion

WP CLI permet de faire énormément de choses depuis le terminal, mais soyons honnêtes, gérer son contenu via le terminal n’est pas très pratique.

Par contre, il fournit quand même quelques commandes très utiles que j’utilise régulièrement:

  • wp post list --format=ids me permet de récupérer les ids des certaines publications,
  • wp post update, avec l’aide de la commande précédente, me permet de mettre à jour en masse des métadonnées et des termes,
  • wp media regenerate permet de régénérer toutes nos images,
  • wp user update permet aussi de mettre à jour les utilisateurs en masse.

Mais le plus gros avantage à utiliser WP CLI est de faciliter les tâches de développement pénibles et répétitives. Quand WP CLI s’occupe de générer votre fichier POT et de packager et zipper votre thème ou extension, le gain de temps est énorme. En deux commandes, vous avez un zip que vous pouvez déposer sur le répertoire officiel, ou uploader chez votre client.

Nous verrons toutes ces techniques dans le prochain article, donc inscrivez-vous ci-dessous pour ne pas le rater !

Apprenez à développer un Block Theme

Inscrivez-vous pour comprendre les Block Themes, prendre en main l'éditeur de site de WordPress, et développer votre premier Block Theme.