Comment implémenter l'auto-complétion conditionnelle pour les commandes WooCommerce payantes
Dans WooCommerce, les produits virtuels rencontrent souvent des problèmes avec l'exécution automatique des commandes. Ce guide complet propose plusieurs solutions pour résoudre ce problème, notamment un extrait de code personnalisé et des options de plug-in. Pour une approche plus granulaire, envisagez d'implémenter un code conditionnel basé sur les méthodes de paiement WooCommerce.
Code conditionnel pour la saisie semi-automatique des commandes payantes
Pour appliquer de manière sélective la fonctionnalité de saisie semi-automatique en fonction des méthodes de paiement , utilisez le hook de filtre woocommerce_payment_complete_order_status, qui est déclenché lorsqu'un paiement est requis lors du paiement. Voici une version améliorée compatible avec WooCommerce 3 et supérieur :
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'; }
Ce code change le statut de commande payée autorisée en « terminé » pour toutes les passerelles de paiement sauf « Virement bancaire » (bacs), « Paiement à la livraison » (morue), et "Cheque" (chèque).
Supplémentaire Considérations
Alternatives
Version améliorée (2018)
add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 ); function wc_auto_complete_paid_order( $order_id ) { // No updates for Bank wire, Cash on delivery, and Cheque if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) { return; } // Autocomplete all others else { $order->update_status( 'completed' ); } }
Réponse originale ( toutes les versions de WooCommerce)
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 ); function custom_woocommerce_auto_complete_paid_order( $order_id ) { // No updates for Bank wire, Cash on delivery, and Cheque 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; } // Autocomplete all others else { $order->update_status( 'completed' ); } }
Remarque : assurez-vous de placez les extraits de code dans le fichier function.php de votre thème enfant.
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!