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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-17 20:53:11943parcourir

How to Automate WooCommerce Order Completion for Specific Payment Methods?

Complétion automatique des commandes payées dans WooCommerce pour des méthodes de paiement spécifiques

WooCommerce complète généralement automatiquement les commandes de produits virtuels. Cependant, certains modes de paiement, tels que le « virement bancaire », le « paiement à la livraison » et le « chèque », nécessitent une approche conditionnelle.

woocommerce_payment_complete_order_status Filter Hook

La solution optimale à ce problème consiste à tirer parti du hook de filtre woocommerce_payment_complete_order_status, qui est utilisé par tous les modes de paiement lorsqu'un paiement est requis à paiement.

Code conditionnel utilisant le crochet de filtre

Le code suivant utilise le crochet de filtre et applique conditionnellement le changement de statut en fonction du mode de paiement :

add_filter('woocommerce_payment_complete_order_status', 'wc_auto_complete_paid_order', 10, 3);
function wc_auto_complete_paid_order($status, $order_id, $order)
{
    // Check if the payment method is not "Bank wire," "Cash on delivery," or "Cheque."
    if (!in_array($order->get_payment_method(), array('bacs', 'cod', 'cheque'))) {
        // If not, change the order status to "completed."
        return 'completed';
    }

    // Otherwise, do not modify the order status.
    return $status;
}

En utilisant ce crochet de filtre, vous pouvez mettre à jour de manière efficace et précise le statut des commandes payées en fonction des méthodes de paiement sans déclencher plusieurs notifications. clients.

Alternatives

Extrait de code :

Si les modes de paiement que vous souhaitez cibler sont limités à ceux qui le font ne déclenche pas la saisie semi-automatique par défaut (« Virement bancaire », « Contre-remboursement » et « Chèque »), vous pouvez utiliser les éléments suivants code :

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);

    // Check if the payment method is not "Bank wire," "Cash on delivery," or "Cheque."
    if (!in_array($order->get_payment_method(), array('bacs', 'cod', 'cheque'))) {
        // If not, update the order status to "completed."
        $order->update_status('completed');
    }
}

Plugin :

Le plugin « WooCommerce Autocomplete Orders » peut également fournir une solution pour des modes de paiement spécifiques. Cependant, cela peut ne pas fonctionner avec certaines passerelles de cartes de crédit.

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