Maison >développement back-end >tutoriel php >Comment puis-je automatiser l'exécution des commandes WooCommerce pour des méthodes de paiement spécifiques ?

Comment puis-je automatiser l'exécution des commandes WooCommerce pour des méthodes de paiement spécifiques ?

DDD
DDDoriginal
2024-12-11 06:32:09654parcourir

How Can I Automate WooCommerce Order Completion for Specific Payment Methods?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn