Comment compléter automatiquement les commandes de produits virtuels payants dans WooCommerce
Lorsqu'une commande de produit virtuel est marquée comme payée, elle doit généralement être automatiquement définie sur statut « terminé ». Cependant, WooCommerce ne le fait pas toujours. Pour résoudre ce problème, vous pouvez implémenter un code personnalisé basé sur le mode de paiement WooCommerce utilisé.
Solution
L'extrait de code suivant filtre les statuts de commande payés autorisés, complétant ainsi commandes de produits virtuels payées via un paiement non exclu méthodes.
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'; }
Explications
Solutions alternatives
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' ); }
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' ); } }
Remarque : Placez les extraits de code dans le fichier function.php de votre thème ou thème enfant actif.
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!