Суть в следующем: Есть дизайн лендинга, на котором имеется блок со списком последних купленных товаров в магазине. Т.е. купил человек наушники, и в блоке появилась запись "
12:37 - Наушники Apple AirPods, белые - 5600 руб".
add_shortcode( 'customer_products', 'truemisha_products_current_user' );
function truemisha_products_current_user() {
// ничего не делаем, если не авторизован
if ( ! is_user_logged_in() ) {
return;
}
// получаем все оплаченные заказы пользователя
$customer_orders = get_posts( array(
'posts_per_page' => -1,
'meta_key' => '_customer_user',
'meta_value' => get_current_user_id(),
'post_type' => wc_get_order_types(),
'post_status' => array_keys( wc_get_is_paid_statuses() ),
) );
// если заказов не найдено
if ( ! $customer_orders ) {
return;
}
// создаём отдельную переменную для ID товаров и записываем в неё
$ids = array();
foreach ( $customer_orders as $customer_order ) {
$order = wc_get_order( $customer_order->ID );
$items = $order->get_items();
foreach ( $items as $item ) {
$ids[] = $item->get_product_id();
}
}
// возвращаем шорткод
return do_shortcode( '[products ids="' . join( ",", array_unique( $ids ) ) . '"]' );
}
Через get_current_user_id выводятся, естественно, только купленные этим пользователем товары. Есть вариант вывести последние купленные товары всех пользователей?