Automattic\WooCommerce\Admin\API
Orders::get_products_by_order_id
Get product IDs, names, and quantity from order ID.
Метод класса: Orders{}
Хуков нет.
Возвращает
Массив.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->get_products_by_order_id( $order_id );
- $order_id(массив) (обязательный)
- ID of order.
Код Orders::get_products_by_order_id() Orders::get products by order id WC 10.5.2
protected function get_products_by_order_id( $order_id ) {
global $wpdb;
$order_items_table = $wpdb->prefix . 'woocommerce_order_items';
$order_itemmeta_table = $wpdb->prefix . 'woocommerce_order_itemmeta';
$products = $wpdb->get_results(
$wpdb->prepare(
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
"SELECT
order_id,
order_itemmeta.meta_value as product_id,
order_itemmeta_2.meta_value as product_quantity,
order_itemmeta_3.meta_value as variation_id,
{$wpdb->posts}.post_title as product_name
FROM {$order_items_table} order_items
LEFT JOIN {$order_itemmeta_table} order_itemmeta on order_items.order_item_id = order_itemmeta.order_item_id
LEFT JOIN {$order_itemmeta_table} order_itemmeta_2 on order_items.order_item_id = order_itemmeta_2.order_item_id
LEFT JOIN {$order_itemmeta_table} order_itemmeta_3 on order_items.order_item_id = order_itemmeta_3.order_item_id
LEFT JOIN {$wpdb->posts} on {$wpdb->posts}.ID = order_itemmeta.meta_value
WHERE
order_id = ( %d )
AND order_itemmeta.meta_key = '_product_id'
AND order_itemmeta_2.meta_key = '_qty'
AND order_itemmeta_3.meta_key = '_variation_id'
GROUP BY product_id
", // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
$order_id
),
ARRAY_A
);
return $products;
}