Я пытаюсь получить связанный заказ (идентификатор заказа) с одного из идентификаторов позиций.Woocommerce Получите order_id из одного из item_id?
Один случай, например: При редактировании заказа, а также удаление элемента строки (проделанном Ajax) WooCommerce только обеспечивает крючок "woocommerce_before_delete_order_item"
и передает только $item_id
. (Функция woo выполняет sql, а не WP enviroment). Мне нужно идентификатор «принадлежности», чтобы сделать какое-то действие!
Мое решение до сих пор заключается в том, чтобы прокручивать все заказы и сравнивать идентификатор элементов, а также разрывать и возвращать идентификатор заказа при совпадении.
Это способ замедлить или «громоздкий неуклюжий» при сохранении 10000 заказов и более живых в текущем магазине.
Это не работает:
wp_get_post_parent_id ($item_id)
Но Im надеясь есть подобный вызов, или мне нужно сделать DB SQL
поиска? Любой ответ, связанный с mySQL
, пожалуйста, сделайте его «скопируйте и вставьте в готовом виде». Im отлично на PHP, но не обрабатывать или никогда не писать собственный SQL.
Спасибо за помощь! Ниже мое решение до сих пор:
$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;
}
Отлично: https://docs.woothemes.com/wc-apidocs/source-class-WC_Abstract_Order.html#1239 – LoicTheAztec
Спасибо! Какая связь? Номер строки указывает на '' line_tax'', который, похоже, не связан с этим вопросом/ответом. – helgatheviking
По-видимому, у них есть проблема с номерами строк в WC API DOCS. Потому что если вы посмотрите на мой URL-адрес, укажете строку 1239, но она отобразит строку 1277 ... Строка 1239 очень похожа на ваш код и связана с функцией get_items() – LoicTheAztec