Maison >développement back-end >tutoriel php >Comment puis-je compléter automatiquement les commandes WooCommerce payantes avec une logique conditionnelle ?
Code conditionnel pour la complétion automatique des commandes payantes dans WooCommerce
WooCommerce complète généralement automatiquement les commandes de produits virtuels, mais cela peut ne pas se produire en raison du mode de paiement limites. Voici comment implémenter du code conditionnel pour gérer ce problème :
Identification du hook de filtre :
Le hook de filtre pour modifier les statuts de commande payés autorisés est woocommerce_payment_complete_order_status. Ce hook est utilisé par tous les modes de paiement qui nécessitent un paiement lors du paiement.
Solution pour WooCommerce 3 et supérieur (2019) :
add_filter( 'woocommerce_payment_complete_order_status', 'wc_auto_complete_paid_order', 10, 3 ); function wc_auto_complete_paid_order( $status, $order_id, $order ) { return 'completed'; }
Version améliorée pour WooCommerce 3 et supérieur (2018) :
add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 ); function wc_auto_complete_paid_order( $order_id ) { $order = wc_get_order( $order_id ); if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque' ) ) ) { return; } $order->update_status( 'completed' ); }
Réponse originale pour tous les WooCommerce Versions :
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 ); if ( ( 'bacs' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cod' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cheque' == get_post_meta($order_id, '_payment_method', true) ) ) { return; } elseif( $order->get_status() === 'processing' ) { $order->update_status( 'completed' ); } }
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!