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:
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!
Aufbauend auf der Antwort von Mo Saeedi glaube ich, dass dieser Ausschnitt eher im Einklang mit dem neuen CRUD-Ansatz
Siehe auch diese Themen in den WordPress Foren:
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 ) :
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):
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.
Tags und Links php wordpress metadata woocommerce orders