Fügen Sie zusätzliches Meta für Bestellungen in Woocommerce hinzu

9

Ich erstelle ein benutzerdefiniertes Plugin für meine Website.

In irgendeinem Teil dieses Plugins muss ich zusätzliches Meta in wp_postmeta für jede Bestellung speichern.

Ich habe das in der Klasse meines Plugins hinzugefügt:

%Vor%

Und das ist add_item_meta() function:

%Vor%

Diese Funktion ist nicht vollständig, aber mit diesen Codes passiert nichts. Ich denke, ich muss einen anderen Haken benutzen, aber ich kann keinen richtigen finden.

Weiß jemand etwas darüber?

Ich habe auch ein anderes Problem mit $item_id : Das ist die globale Variable woocommerce, aber ich kann es nicht in meinem Plugin sehen!

Ich meine, ich habe keinen Zugriff auf diese Variable von meinem Plugin oder so!

    
Mo Saeedi 02.09.2014, 14:39
quelle

4 Antworten

13

Aufbauend auf der Antwort von Mo Saeedi glaube ich, dass dieser Ausschnitt eher im Einklang mit dem neuen CRUD-Ansatz eingeführt von WooCommerce 3.0:

%Vor%

Siehe auch diese Themen in den WordPress Foren:

Guido Walter Pettinari 22.05.2017 11:35
quelle
7

Der 2018-Weg:

Basierend auf Guido W.P. Antwort können Sie stattdessen woocommerce_checkout_create_order Aktion verwenden ein leichterer und effektiverer Versionscode (mit WC 3+ CRUD-Methoden ) :

%Vor%

Der Code geht in die Datei function.php Ihres aktiven untergeordneten Themas (oder aktiven Themes).

Getestet und funktioniert in WooCommerce 3+ (nur) .

EINIGE ERLÄUTERUNGEN:

Der woocommerce_checkout_create_order Aktions-Hook ist nur ein Schritt vor dem Speichern der Auftragsdaten. Siehe unten in einem Auszug der Methode WC_Checkout create_order() (mit beiden Hooks):

%Vor%
  

Warum stattdessen woocommerce_checkout_create_order verwenden? :

     
  • Weil Sie $order = wc_get_order( $order_id ); nicht verwenden müssen, da Sie $order bereits als Argument in der hooked-Funktion erhalten haben.
  •   
  • Sie müssen $order->save(); nicht verwenden, da dies gleich nach erfolgen wird (siehe Quellcode)
  •   
  • Auch woocommerce_checkout_create_order wurde in WooCommerce Version 3 veröffentlicht und es ist auch für diese Funktion geeignet.
  •   

Das funktioniert also mit einer einzigen Codezeile innerhalb der Funktion.

    
LoicTheAztec 29.01.2018 13:53
quelle
4

Antwort ist: Ich sollte woocommerce_checkout_update_order_meta für add_action verwenden und ich sollte auch einfach update_post_meta() verwenden, um meiner Bestellung zusätzliches Meta hinzuzufügen

%Vor%     
Mo Saeedi 03.09.2014 06:56
quelle
3

Der Weg 2016:

%Vor%
  • $order_id ist die ID der Bestellung, die als benutzerdefinierter Posttyp
  • gespeichert wird
  • $posted sind alle Daten von $_POST
Sorin C 11.06.2016 17:30
quelle