Le groupe Facebook ‘WordPress France Entraide‘ est bien pratique pour trouver de l’aide lorsqu’on est débutant, même s’il n’est parfois pas évident de bien comprendre le problème et donc de proposer les bonnes solutions1.
Depuis le Terminal
Pour notre mission du jour, si vous avez la chance d’être chez o2switch il vous suffira, depuis votre cPanel, d’ouvril le Terminal. Pour rappel tous les clients o2switch bénéficient déjà des commandes WP-CLI d’installées. Vous pouvez donc directement ouvrir le Terminal2.

Récupérer la liste des produits à solder
Il est possible que vous ayez besoin que seulement certains produits de votre catalogue soient soldés, il va donc nous falloir apprendre à les sélectionner correctement.
Dans ma situation j’avais besoin de sélectionner uniquement les produits dits « simple » (Simple product). Voici la ligne de commande WP-CLI qui m’a servi pour ça :
wp wc --user=<admin_username> product list --field=id --status=publish --type='simple' --path='path/to/wordpress_folder'
Il vous faudra personnaliser l’argument user (avec prenom.nom par exemple, sans les chevrons) et le chemin absolu vers votre dossier WordPress, vous devriez avoir en sortie une suite de nombres (un par ligne) qui correspond aux id de vos produits filtrés/sélectionnés.
Vous pourriez avoir besoin d’autres types de produits, en voici quelques uns : simple, grouped, external, variable, subscription ou variable-subscription.
💡
Astuce
Si vous souhaitez obtenir la liste des types de produit de votre WooCommerce, vous pouvez soit provoquer une erreur en remplaçant ‘simple’ par ‘xxx’, et vous obtiendrez en sortie les types disponibles.
Soit vous pouvez lister le champ ‘type’ de chaque produit avec la commande suivante :
wp wc --user=<admin_username> product list --field=type --status=publish --path='path/to/wordpress_folder'
Changer le prix remisé (sale price) pour 1 produit
Une fois que vous avez obtenu l’id des produits qui vous intéressent grâce à la ligne de commande précédente, voici la ligne de commande qui vous permettra de renseigner le prix remisé :
wp wc --user=<admin_username> product update <PRODUCT_ID> --sale_price=<PRODUCT_SALE_PRICE> --date_on_sale_from=YYYY-MM-DDT00:00:00 --date_on_sale_to=YYYY-MM-DDT00:00:00 --path='path/to/wordpress_folder'
À personnaliser :
- –user=votre.username
- <PRODUCT_ID> le nombre correspond à l’id d’un de vos produits à solder
- –sale_price=99 -> 99 étant le prix remisé (votre prix régulier doit être supérieur)
- YYYY-MM-DDT00:00:00 YYYY étant l’année, MM le mois et DD le jour, puis après T l’heure où votre solde doit commencer (from) puis finir (to)
- ‘path/to/wordpress_folder‘ le chemin absolu vers votre dossier WordPress
Le tout dans une boucle (la fameuse 1 ligne de commande)
Je vais à présent utiliser une boucle pour récursivement venir remiser le prix de chaque produit filtré. Voici la commande magique :
for PRODUCT_ID in $(wp wc --user=<admin_username> product list --field=id --status=publish --type='simple' --path='path/to/wordpress_folder'); do wp wc --user=<admin_username> product update $PRODUCT_ID --sale_price=<PRODUCT_SALE_PRICE> --date_on_sale_from=YYYY-MM-DDT00:00:00 --date_on_sale_to=YYYY-MM-DDT00:00:00 --path=<admin_username>; done
Explication rapide : la commande après ‘do’ effectuera le travail pour chaque produit PRODUCT_ID de façon récursive.
Le live pour mieux comprendre :
Notes
- En effet, dans la majorité des cas, lorsqu’il s’agit de debug, il faudra de l’expérience et de l’intuition et toute une série de tests de solution, où chaque résultat de chaque test nous amènera vers une solution finale et définitive.
- Si vous devez installer les commandes WP-CLI parce que votre hébergeur ne les a pas fait, référez à ces instructions



