Ich versuche, die zugehörige Bestellung (die Bestell-ID) von einer der Werbebuchungs-ID abzurufen.Woocommerce Holen Sie sich die order_id von einem der item_id?
Ein Fall zum Beispiel: Wenn eine Bestellung bearbeiten, und eine Position Löschen (done von Ajax) die WooCommerce liefern nur den Haken "woocommerce_before_delete_order_item"
und übergibt nur $item_id
. (Die Woo-Funktion führt sql und nicht die WP-Umgebung aus). Ich brauche die "gehörende" Order-ID, um etwas zu tun!
Meine bisherige Lösung besteht darin, alle Bestellungen zu durchlaufen und die Artikel-ID zu vergleichen und die Auftrags-ID zu brechen und zurückzugeben, wenn die Übereinstimmung auftritt.
Dies ist viel zu langsam, oder "sperrig ungeschickt", wenn 10000 Bestellungen und mehr im aktuellen Shop lebendig zu halten.
funktioniert das nicht:
wp_get_post_parent_id ($item_id)
Aber Im Hoffnung, es einen ähnlichen Anruf ist, oder muss ich eine DB SQL
Suche machen? Jede Antwort mit mySQL
, bitte machen Sie es "Kopieren und Einfügen bereit". Ich bin großartig in PHP, aber nicht handle oder nie mein eigenes SQL schreiben.
Danke für jede Hilfe! Im Folgenden finden Sie meine Lösung so weit:
$order_id = my_wc_get_order_from_item_id($item_id);
function my_wc_get_order_from_item_id($id) {
$orders = get_posts('post_type=shop_order&numberposts=-1&post_status=publish');
foreach($orders as $obj) {
$order = new WC_Order($obj->ID);
if (count($order->get_items('line_item')) > 0) {
foreach($order->get_items('line_item') as $item_id => $item) {
if($item_id == $id) $return_value = $obj->ID;
if(isset($return_value)) break;
}
}
unset($order);
if(isset($return_value)) break;
}
if(isset($return_value)) return $return_value;
else return 0;
}
Ausgezeichnet: https://docs.woothemes.com/wc-apidocs/source-class-WC_Abstract_Order.html#1239 – LoicTheAztec
Dank! Was ist der Link zu? Die Zeilennummer zeigt auf "line_tax", was nicht mit dieser Frage/Antwort zusammenhängt. – helgatheviking
Anscheinend haben sie ein Problem mit Zeilennummern auf WC API DOCS. Weil, wenn Sie auf meine URL schauen, zeigt Linie 1239, aber es zeigt Linie 1277 ... Linie 1239 ist Ihrem Code sehr ähnlich und ist verwandt mit get_items() Funktion – LoicTheAztec