Si vous avez un site sous WordPress avec de très nombreux articles, et que vous voulez les exporter, il y a plusieurs solutions.

Capture d'écran 2016-03-21 09.55.41

Soit vous faites un export directement depuis WordPress avec un plugin d'export. Soit vous faites un export direct en SQL depuis la base.

La première solution risque d'énormément solliciter votre serveur, et provoquer des timeouts. La seconde solution est meilleure niveau perf mais un peu plus complexe.

Alors que faire ? Et bien j'ai trouvé une solution intermédiaire qui est à la fois simple à mettre en oeuvre et qui va vous permettre de manipuler vos installation WordPress du bout des doigts.

Ça s'appelle wp-cli et c'est un outil en ligne de commande qui permet de réaliser tout un tas d'opérations sur WordPress. Il s'installe sur votre serveur comme ceci :

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

Pour vérifier que ça fonctionne tapez ensuite :

php wp-cli.phar --info

On va ensuite rendre exécutable et renommer l'outil en wp pour que ça soit plus simple à retenir.

chmod +x wp-cli.phar

sudo mv wp-cli.phar /usr/local/bin/wp

Pour vérifier que ça fonctionne, tapez :

wp --info

Wp-Cli dispose de nombreuses commandes que voici :

Built-in_Commands_WP-CLI_-_2016-03-21_10.04.50

Je vais vous donner un exemple pour l'export et l'import car c'est ce qui m'intéresse dans le cadre de cette article. Pour que wp-cli retrouve ses petits, vous devez d'abord vous placer dans le répertoire racine de wordpress (là où se trouve votre site).

cd /var/www/wordpress

Puis entrez la commande suivante pour faire un export vers /tmp de tous les articles sortis entre le 01/01/2003 et le 31/12/2016. Le paramètre allow-root permet de lancer la commande en tant que root. Je vous recommande plutôt de la lancer avec le même user que celui utilisé par WordPress.

wp export --dir=/tmp/ --post_type=post --start_date=2003-01-01 --end_date=2016-12-31 --allow-root

Comme vous pouvez le voir sur le détail de la commande export, vous pouvez exporter uniquement certaines catégories, certains users, avec ou sans les commentaires...etc. Allez jeter un oeil.

Enfin, cela vous générera sans faire chauffer votre serveur, une liste de fichiers XML au format d'export WordPress WXR que vous pourrez réimporter avec la commande suivante :

wp import /tmp —authors=skip --allow-root

Le paramètre authors permet de créer les users automatiquement dans WordPress (create) ou de les mapper avec l'aide d'un CSV ou de passer l'association des articles avec un auteur (skip) pour le faire plus tard. Je vous recommande lire le détail des paramètres de la commande import pour plus d'infos là dessus.

Voilà pour cette petite introduction à WP-Cli. Cet outil est très puissant et permet de faire pas mal de choses en ligne de commande, y compris supprimer des contenus donc soyez prudent avant de lancer une commande et référez-vous à la documentation qui est très bien faite.