Surmonter les limites de la saisie semi-automatique des commandes de WooCommerce
Normalement, WooCommerce automatise la finalisation des commandes de produits virtuels. Toutefois, pour les modes de paiement tels que « Virement bancaire », « Contre-remboursement » et « Chèque », cette fonctionnalité peut ne pas être disponible. Pour résoudre ce problème et appliquer conditionnellement la saisie semi-automatique des commandes en fonction des modes de paiement, les solutions suivantes peuvent être mises en œuvre :
À l'aide du hook de filtre woocommerce_payment_complete_order_status
Ce hook de filtre est déclenché lorsque un paiement est requis lors du paiement et est utilisé par tous les modes de paiement. En modifiant les statuts de commande payés autorisés, vous pouvez obtenir une saisie semi-automatique conditionnelle :
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'; }
En utilisant le crochet d'action woocommerce_thankyou
Pour les versions 3 et supérieures de WooCommerce, le code suivant peut être utilisé :
add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 ); function wc_auto_complete_paid_order( $order_id ) { if ( ! $order_id ) return; $order = wc_get_order( $order_id ); if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) { return; } else { $order->update_status( 'completed' ); } }
Original Solution
Pour toutes les versions de WooCommerce, le code suivant peut être utilisé :
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 ); function custom_woocommerce_auto_complete_paid_order( $order_id ) { if ( ! $order_id ) return; $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' ); } }
Ces solutions fournissent une complétion automatique conditionnelle des commandes pour les commandes payées en fonction des méthodes de paiement spécifiées, garantissant ainsi une exécution efficace et traitement précis des commandes dans les magasins WooCommerce qui acceptent une variété d'options de paiement.
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!