Quand on utilise WordPress depuis plusieurs années et qu’on a testé quelques plugins on se retrouve souvent avec beaucoup de custom post fields dans nos articles. C’était mon cas sur videoalacon.fr et j’ai décidé de faire un peu de ménage dans ce bordel en écrivant un petit script bash qui utilise wp-cli.
Voici le script bash :
Il suffit de télécharger le script et de le rendre exécutable :
curl -o wordpress-bulk-delete-custom-fields.sh https://gist.githubusercontent.com/nierdz/6952539552b9ac9c8b6e93c0065b9a16/raw/244bd65e8c31e246df1a1520fc10116073720c64/wordpress-bulk-delete-custom-fields.sh
chmod +x wordpress-bulk-delete-custom-fields.sh
Il faut ensuite éditer le script pour ajouter ou supprimer les custom post fields que vous voulez supprimer. Pour cela il faut éditer les deux variables suivantes :
Et ensuite il faut le lancer avec la variable WP_BINARY
qui permet d’indiquer où se trouve le binaire de wp-cli. Par exemple, moi qui fait tourner WordPress dans un conteneur docker qui se nomme valc-wordpress dans lequel le binaire wp-cli est /usr/bin/wp
, je lance le script comme ça :
WP_BINARY="docker exec valc-wordpress /usr/bin/wp --allow-root" ./scripts/wordpress-bulk-delete-custom-fields.sh
En fonction du nombre d’articles et du nombre de custom post fields à supprimer, cela peut prendre plus ou moins de temps. A titre indicatif, pour environ 3000 articles cela m’a pris plus de 8 heures. Il peut donc être judicieux de lancer la commande dans un screen.