Thème: Auto, remplir les commandes payées
Normalement thème devrait saisie semi-automatique des commandes pour les produits virtuels. Mais il ne l'est pas et c'est un réel problème, même un BUG comme.
Donc, à ce stade, vous pouvez trouver la somme des choses utiles(mais pas vraiment pratique):
1) Un extrait de code (que vous pouvez trouver dans le thème docs):
/** * Auto Complete all WooCommerce orders. */ add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order'); function custom_woocommerce_auto_complete_order( $order_id ) { if ( ! $order_id ) { return; } $order = wc_get_order( $order_id ); $order->update_status( 'completed' ); }
Mais ce morceau de code ne fonctionne pas pour BACS*, Payer à la livraison et Chèque méthodes de paiement. C'est ok pour Paypal et Carte de Crédit passerelles méthodes de paiement.
*BACS est une Banque Directe méthode de paiement par virement
Et ...
2) Un plugin: Thème de saisie semi-automatique des Commandes
Ce plugin fonctionne pour toutes les méthodes de paiement, mais pas pour autres Carte de Crédit passerelles méthodes de paiement.
Ma question:
L'aide (comme base) le thème extrait de code dans le point 1:
Comment puis-je mettre en œuvre conditionnelle code basé sur le thème des méthodes de paiement?
Je veux dire quelque chose comme: si les méthodes de paiement ne sont pas des "BACS", "paiement à la livraison" et "Chèque" puis appliquer l'extrait de code (mise à jour de statut "terminé" pour les commandes payées concernant les produits virtuels).
De l'aide sera très agréable.
Vous devez vous connecter pour publier un commentaire.
Les plus précises, efficaces et légers solution (Pour le Thème 3 et ci-dessus) - 2019
Ce filtre crochet est situé dans:
WC_Order
Classe à l'intérieur depayment_complete()
méthode qui est utilisé par toutes les méthodes de paiement quand un paiement est requis dans la caisse.WC_Order_Data_Store_CPT
Classe à l'intérieur deupdate()
méthode.Comme vous pouvez le voir, par défaut, le autorisé payé statuts de commande sont "traitement" et "terminé".
À l'aide du code ci-dessous juste modifier la commande payée statut (qui est définie par la passerelle de paiement pour les commandes payées) à "terminée":
Code va dans function.php fichier de l'actif thème enfant (ou thème actif).
Connexes: Thème: la saisie semi-automatique les commandes payées basé sur la méthode d'expédition
2018 - version Améliorée (Pour le Thème 3 et ci-dessus)
Basé sur le Thème officiel de crochet, j'ai trouvé une solution à ce problème *(Fonctionne avec WC 3+).
À Thème pour tous les autres passerelles de paiement autres que
bacs
(virement Bancaire),cheque
etcod
(en Espèces à la livraison), l'payé statuts de commande sont "traitement" et "terminé".J'ai donc cibler le "traitement" de statut de la commande pour toutes les passerelles de paiement comme Paypal ou paiement par carte de crédit, la mise à jour de l'état de la commande à remplir.
Le code:
Code va dans function.php fichier de l'actif thème enfant (ou thème actif).
Réponse originale à cette question (Pour tous les thème versions):
Le code:
Code va dans function.php fichier de l'actif thème enfant (ou thème actif).
Avec l'aide de ce post: Comment faire pour vérifier le mode de paiement sur un Thème order by id?
avec ceci :
get_post_meta( $order_id, '_payment_method', true );
de helgathevikingVirement bancaire, en Espèces à la livraison et de paiement par Chèque sont ignorés et garder originales, statut de la commande.
Mise à jour du code pour la compatibilité avec WC 3.0+ (2017-06-10)
Pour moi ce crochet a été appelé, même si le paiement n'a pas abouti ou échoué , et ce résultat pour compléter les échecs de paiement , après quelques recherches, j'ai changé l'utilisation de 'woocommerce_payment_complete" parce que son nom uniquement lorsque le paiement est complet et couvre le problème @LoicTheAztec mentionne ci – dessus