WP-CLI permet de lister très rapidement les articles publiés d’un site WordPress, sans passer par l’administration. C’est pratique pour créer un export d’URLs, préparer une campagne de partage social, auditer un site, vérifier des contenus programmés, ou alimenter un outil externe.
Dans mon cas, j’avais besoin de récupérer les URLs des articles publiés pour les soumettre à SocialBee. Comme l’outil accepte des lots de 100 URLs, WP-CLI est parfait : une commande, une pagination, et c’est plié proprement.
Lister toutes les URLs des articles publiés
La commande de base est très simple :
wp post list --post_type=post --post_status=publish --field=urlLangage du code : PHP (php)
Elle retourne une URL par ligne, uniquement pour les articles publiés.
Les arguments importants sont :
wp post listliste les contenus WordPress.--post_type=postlimite la requête aux articles.--post_status=publishlimite la requête aux contenus publiés.--field=urlaffiche uniquement l’URL de chaque article.
WP-CLI accepte ici les arguments de WP_Query. Vous pouvez donc filtrer les résultats comme vous le feriez dans une requête WordPress classique.
Exporter la liste dans un fichier texte
Pour créer un fichier contenant toutes les URLs publiées :
wp post list --post_type=post --post_status=publish --field=url > articles-publies.txtLangage du code : PHP (php)
Vous pouvez ensuite vérifier le nombre de lignes :
wc -l articles-publies.txtLangage du code : CSS (css)
Et consulter les premières URLs :
head articles-publies.txtLangage du code : CSS (css)
Ou les dernières :
tail articles-publies.txtLangage du code : CSS (css)
Lister les articles publiés par lots de 100 URLs
Pour récupérer les 100 premiers articles publiés :
wp post list --post_type=post --post_status=publish --field=url --posts_per_page=100 --paged=1Langage du code : PHP (php)
Pour récupérer les 100 suivants, augmentez simplement --paged :
wp post list --post_type=post --post_status=publish --field=url --posts_per_page=100 --paged=2Langage du code : PHP (php)
Puis :
wp post list --post_type=post --post_status=publish --field=url --posts_per_page=100 --paged=3Langage du code : PHP (php)
C’est la méthode la plus simple si votre outil d’import accepte uniquement des listes de 100 URLs. Pas besoin d’ouvrir WordPress, pas besoin de copier-coller depuis l’admin, pas besoin de menacer Excel.
Créer automatiquement des fichiers de 100 URLs
Si vous voulez générer automatiquement plusieurs fichiers, chacun contenant 100 URLs, utilisez split :
wp post list --post_type=post --post_status=publish --field=url > articles-publies.txt
split -l 100 -d --additional-suffix=.txt articles-publies.txt articles-lot-Langage du code : PHP (php)
Vous obtiendrez des fichiers du type :
articles-lot-00.txt
articles-lot-01.txt
articles-lot-02.txtLangage du code : CSS (css)
Chaque fichier contient 100 URLs maximum. C’est idéal pour les outils de planification sociale qui limitent les imports par lot.
Exporter les articles en CSV
Si vous avez besoin d’un fichier plus riche, exportez les articles en CSV avec leur ID, titre, date et URL :
wp post list \
--post_type=post \
--post_status=publish \
--fields=ID,post_title,post_date,url \
--format=csv > articles-publies.csvLangage du code : PHP (php)
Ce format est plus pratique pour un audit éditorial, une migration, ou un contrôle avant republication.
Pour garder uniquement les IDs, WP-CLI propose aussi le format ids :
wp post list --post_type=post --post_status=publish --format=idsLangage du code : PHP (php)
Lister les articles programmés
Pour afficher les articles planifiés dans WordPress :
wp post list \
--post_type=post \
--post_status=future \
--fields=ID,post_title,post_date,url \
--format=tableLangage du code : PHP (php)
Pour exporter uniquement les URLs des articles programmés :
wp post list --post_type=post --post_status=future --field=urlLangage du code : PHP (php)
Et pour compter les articles programmés :
wp post list --post_type=post --post_status=future --format=countLangage du code : PHP (php)
Lister les articles d’une catégorie
Pour lister les articles publiés d’une catégorie précise, utilisez son ID :
wp post list --post_type=post --post_status=publish --cat=2 --field=urlLangage du code : PHP (php)
Pour récupérer les articles des catégories 2 et 7 :
wp post list --post_type=post --post_status=publish --cat=2,7 --field=urlLangage du code : PHP (php)
Si vous ne connaissez pas l’ID d’une catégorie, listez les catégories avec WP-CLI :
wp term list category --fields=term_id,name,slug,countLangage du code : PHP (php)
Vous pouvez aussi cibler une catégorie par son slug avec category_name :
wp post list --post_type=post --post_status=publish --category_name=wordpress --field=urlLangage du code : PHP (php)
Pour un audit plus large des contenus WordPress en ligne de commande, vous pouvez aussi consulter l’article sur l’identification des options de plugins dans la base de données WordPress. Le principe reste le même : WP-CLI évite beaucoup de clics inutiles.
Lister les articles d’un auteur
Pour lister les articles publiés d’un auteur précis :
wp post list --post_type=post --post_status=publish --author=1 --field=urlLangage du code : PHP (php)
Pour trouver les IDs des auteurs :
wp user list --fields=ID,user_login,display_name,user_emailLangage du code : PHP (php)
Lister les articles publiés après une date
WP-CLI acceptant les arguments de WP_Query, vous pouvez filtrer les articles avec date_query. La syntaxe en ligne de commande devient vite moins lisible, donc j’utilise souvent --date_query en JSON :
wp post list \
--post_type=post \
--post_status=publish \
--date_query='[{"after":"2025-01-01","inclusive":true}]' \
--fields=ID,post_title,post_date,url \
--format=csvLangage du code : PHP (php)
Pour cibler une période :
wp post list \
--post_type=post \
--post_status=publish \
--date_query='[{"after":"2025-01-01","before":"2025-12-31","inclusive":true}]' \
--fields=ID,post_title,post_date,url \
--format=csvLangage du code : PHP (php)
Cette méthode est très utile pour exporter les contenus publiés sur une année, préparer un bilan éditorial, ou isoler les articles récents à repartager.
Lister les pages en plus des articles
Pour récupérer les articles et les pages publiés :
wp post list --post_type=post,page --post_status=publish --field=urlLangage du code : PHP (php)
Pour exporter le tout en CSV :
wp post list \
--post_type=post,page \
--post_status=publish \
--fields=ID,post_type,post_title,post_date,url \
--format=csv > contenus-publies.csvLangage du code : PHP (php)
Compter les articles publiés
Pour obtenir uniquement le nombre d’articles publiés :
wp post list --post_type=post --post_status=publish --format=countLangage du code : PHP (php)
Pour compter les articles d’une catégorie :
wp post list --post_type=post --post_status=publish --cat=2 --format=countLangage du code : PHP (php)
Trier les résultats
Par défaut, WordPress applique son ordre de requête standard. Pour obtenir les articles du plus récent au plus ancien :
wp post list \
--post_type=post \
--post_status=publish \
--orderby=date \
--order=DESC \
--field=urlLangage du code : PHP (php)
Pour les plus anciens d’abord :
wp post list \
--post_type=post \
--post_status=publish \
--orderby=date \
--order=ASC \
--field=urlLangage du code : PHP (php)
Utiliser –path au lieu de se placer dans le dossier WordPress
Si vous n’êtes pas dans le répertoire du site, indiquez le chemin de l’installation WordPress :
wp --path=/home/example/public_html post list --post_type=post --post_status=publish --field=urlLangage du code : JavaScript (javascript)
C’est propre, lisible, et très pratique dans des scripts qui parcourent plusieurs sites WordPress.
Si vous gérez plusieurs installations WordPress sur un serveur, l’article sur la migration vers MySQL 8.4 LTS montre aussi une approche scriptée pour parcourir plusieurs sites et extraire leur configuration.
Cas multisite : utiliser –url
Sur un réseau multisite, ajoutez --url pour cibler le bon site :
wp --url=https://example.com post list --post_type=post --post_status=publish --field=urlLangage du code : JavaScript (javascript)
Et pour un sous-site :
wp --url=https://example.com/site-2/ post list --post_type=post --post_status=publish --field=urlLangage du code : JavaScript (javascript)
Faut-il utiliser –allow-root ?
L’ancienne commande utilisait --allow-root, car elle était lancée depuis le compte root. Cela fonctionne, mais ce n’est pas l’idéal. Sur un serveur propre, lancez plutôt WP-CLI avec l’utilisateur propriétaire du site.
sudo -u exampleuser wp --path=/home/example/public_html post list --post_type=post --post_status=publish --field=urlLangage du code : JavaScript (javascript)
Gardez --allow-root pour les cas où vous savez exactement pourquoi vous en avez besoin. Sinon, utilisez le bon utilisateur système. WordPress, les permissions Unix et votre futur vous-même vous remercieront.
Script Bash : exporter des lots de 100 URLs
Voici un petit script Bash réutilisable pour exporter toutes les URLs d’articles publiés, puis créer des fichiers de 100 lignes :
#!/usr/bin/env bash
set -euo pipefail
WP_PATH="/home/example/public_html"
OUTPUT_DIR="./exports-urls"
OUTPUT_FILE="${OUTPUT_DIR}/articles-publies.txt"
mkdir -p "${OUTPUT_DIR}"
wp --path="${WP_PATH}" post list \
--post_type=post \
--post_status=publish \
--orderby=date \
--order=DESC \
--field=url \
> "${OUTPUT_FILE}"
split -l 100 -d --additional-suffix=.txt "${OUTPUT_FILE}" "${OUTPUT_DIR}/articles-lot-"
echo "Export terminé : ${OUTPUT_FILE}"
echo "Lots de 100 URLs créés dans : ${OUTPUT_DIR}"Langage du code : PHP (php)
Rendez-le exécutable :
chmod +x export-urls-wordpress.shLangage du code : JavaScript (javascript)
Puis lancez-le :
./export-urls-wordpress.shLangage du code : JavaScript (javascript)
Commandes utiles à garder sous la main
Toutes les URLs des articles publiés :
wp post list --post_type=post --post_status=publish --field=urlLangage du code : PHP (php)
Les 100 premiers articles publiés :
wp post list --post_type=post --post_status=publish --field=url --posts_per_page=100 --paged=1Langage du code : PHP (php)
Les articles programmés :
wp post list --post_type=post --post_status=future --fields=ID,post_title,post_date,urlLangage du code : PHP (php)
Les articles des catégories 2 et 7 :
wp post list --post_type=post --post_status=publish --cat=2,7 --field=urlLangage du code : PHP (php)
Export CSV complet :
wp post list --post_type=post --post_status=publish --fields=ID,post_title,post_date,url --format=csv > articles-publies.csvLangage du code : PHP (php)
Conclusion
Pour lister les URLs des articles publiés sur WordPress, WP-CLI reste la méthode la plus rapide et la plus fiable. La commande essentielle tient en une ligne :
wp post list --post_type=post --post_status=publish --field=urlLangage du code : PHP (php)
Ensuite, adaptez selon votre besoin : lots de 100 URLs, export CSV, catégories, auteurs, dates, articles programmés, pages ou multisite. C’est tout l’intérêt de WP-CLI : une base simple, puis des filtres puissants. L’admin WordPress peut garder ses tableaux paginés. Le terminal, lui, va droit au but.


