Configuration des moyens de paiement WooCommerce
Dans cet article, je montre comment autoriser le paiement à la livraison seulement pour les abonnés connectés, de manière programmatique.
Pour rappel, les moyens de paiements WooCommerce peuvent être configurés à partir de son sous-menu Réglages
, dans l’onglet Paiements
.
Je me contente d’activer les moyens n’impliquant aucun système tiers :
- Virement bancaire,
- Paiements par chèque,
- Paiement à la livraison
Filtrage des moyens de paiement
Le hook woocommerce_available_payment_gateways
permet de filtrer les moyens de paiement disponibles, en les récupérant dans le paramètre $gateways
:
apply_filters( 'woocommerce_available_payment_gateways', $gateways )
Dans cet exemple, voici un aperçu du contenu du paramètre $gateways
:
Il suffit donc de supprimer l’entrée WC_Gateway_COD
possédant la clef cod
dans ce tableau pour désactiver le moyen de paiement à la livraison.
Le code intégral
Le code complet de l’exemple, à placer das le fichier functions.php
du thème enfant utilisé par WordPress :
Dans ce code, aucun filtrage n’est appliqué si la navigation se trouve côté administration WordPress, afin de ne pas en altérer le fonctionnement. Cette condition est vérifiée à l’aide de is_admin()
au début de l’exécution du filtre.
Le contrôle de connexion est effectuée grâce à la fonction is_user_logged_in()
de WordPress.
La fonction get_currentuserinfo()
permet de récupérer les informations sur l’utilisateur courant, et notamment ses roles. Afin de vérifier qu’il ait un rôle abonné, il faut vérifier si la chaîne subscriber
est présente dans le tableau de ses rôles.
Le moyen de paiement est supprimé cette instruction : unset( $gateways['cod'] );