Maison >développement back-end >tutoriel php >Comment automatiser l'exécution des commandes WooCommerce pour des méthodes de paiement spécifiques ?
Complétion automatique des commandes payées dans WooCommerce pour des méthodes de paiement spécifiques
WooCommerce complète généralement automatiquement les commandes de produits virtuels. Cependant, certains modes de paiement, tels que le « virement bancaire », le « paiement à la livraison » et le « chèque », nécessitent une approche conditionnelle.
woocommerce_payment_complete_order_status Filter Hook
La solution optimale à ce problème consiste à tirer parti du hook de filtre woocommerce_payment_complete_order_status, qui est utilisé par tous les modes de paiement lorsqu'un paiement est requis à paiement.
Code conditionnel utilisant le crochet de filtre
Le code suivant utilise le crochet de filtre et applique conditionnellement le changement de statut en fonction du mode de paiement :
add_filter('woocommerce_payment_complete_order_status', 'wc_auto_complete_paid_order', 10, 3); function wc_auto_complete_paid_order($status, $order_id, $order) { // Check if the payment method is not "Bank wire," "Cash on delivery," or "Cheque." if (!in_array($order->get_payment_method(), array('bacs', 'cod', 'cheque'))) { // If not, change the order status to "completed." return 'completed'; } // Otherwise, do not modify the order status. return $status; }
En utilisant ce crochet de filtre, vous pouvez mettre à jour de manière efficace et précise le statut des commandes payées en fonction des méthodes de paiement sans déclencher plusieurs notifications. clients.
Alternatives
Extrait de code :
Si les modes de paiement que vous souhaitez cibler sont limités à ceux qui le font ne déclenche pas la saisie semi-automatique par défaut (« Virement bancaire », « Contre-remboursement » et « Chèque »), vous pouvez utiliser les éléments suivants code :
add_action('woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1); function custom_woocommerce_auto_complete_paid_order($order_id) { $order = wc_get_order($order_id); // Check if the payment method is not "Bank wire," "Cash on delivery," or "Cheque." if (!in_array($order->get_payment_method(), array('bacs', 'cod', 'cheque'))) { // If not, update the order status to "completed." $order->update_status('completed'); } }
Plugin :
Le plugin « WooCommerce Autocomplete Orders » peut également fournir une solution pour des modes de paiement spécifiques. Cependant, cela peut ne pas fonctionner avec certaines passerelles de cartes de crédit.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!