public static function get_order_item($item_id = 0)
{
global $wpdb;
if (is_numeric($item_id)) {
$item_data = $wpdb->get_row($wpdb->prepare("SELECT order_item_type FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d LIMIT 1;", $item_id));
$item_type = $item_data->order_item_type;
$id = $item_id;
} elseif ($item_id instanceof WC_Order_Item) {
$item_type = $item_id->get_type();
$id = $item_id->get_id();
} elseif (is_object($item_id) && !empty($item_id->order_item_type)) {
$id = $item_id->order_item_id;
$item_type = $item_id->order_item_type;
} else {
$item_data = false;
$item_type = false;
$id = false;
}
if ($id && $item_type) {
$classname = false;
switch ($item_type) {
case 'line_item':
case 'product':
$classname = 'WC_Order_Item_Product';
break;
case 'coupon':
$classname = 'WC_Order_Item_Coupon';
break;
case 'fee':
$classname = 'WC_Order_Item_Fee';
break;
case 'shipping':
$classname = 'WC_Order_Item_Shipping';
break;
case 'tax':
$classname = 'WC_Order_Item_Tax';
break;
}
if ($classname) {
try {
return new $classname($id);
} catch (Exception $e) {
return false;
}
}
}
return false;
}