Maison > développement back-end > tutoriel php > Comment automatiser la réalisation des commandes de produits virtuels payants dans WooCommerce ?

Comment automatiser la réalisation des commandes de produits virtuels payants dans WooCommerce ?

Susan Sarandon
Libérer: 2024-12-09 18:25:11
original
504 Les gens l'ont consulté

How to Automate the Completion of Paid Virtual Product Orders in WooCommerce?

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';
}
Copier après la connexion

Explications

  • Léger et efficace :Ce filtre se déclenche uniquement lorsqu'un paiement en ligne est requis, évitant ainsi conditions inutiles.
  • Précis : Empêche plusieurs notifications client en définissant le statut de la commande sur "terminé" une seule fois.

Solutions alternatives

  • Version améliorée (WooCommerce 3 et supérieur) :
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' );
}
Copier après la connexion
  • Réponse originale (tous les WooCommerce Versions) :
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' );
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal