Creamos un shortcode que muestra los productos que ha comprado el cliente logueado en el pasado, en este ejemplo con [mis_productos_comprados].

/* Mostrar los productos comprados por el usuario actual con sl shortcode [mis_productos_comprados].*/
add_shortcode('mis_productos_comprados', 'products_bought_by_curr_user');

function products_bought_by_curr_user() {
    $current_user = wp_get_current_user();
    if (0 == $current_user - > ID) return;
    $customer_orders = get_posts(array(
        'numberposts' => -1,
        'meta_key' => '_customer_user',
        'meta_value' => $current_user - > ID,
        'post_type' => wc_get_order_types(),
        'post_status' => array_keys(wc_get_is_paid_statuses()),
    ));
    if (!$customer_orders) return;
    $product_ids = array();
    foreach($customer_orders as $customer_order) {
        $order = wc_get_order($customer_order - > ID);
        $items = $order - > get_items();
        foreach($items as $item) {
            $product_id = $item - > get_product_id();
            $product_ids[] = $product_id;
        }
    }
    $product_ids = array_unique($product_ids);
    $product_ids_str = implode(",", $product_ids);
    return do_shortcode("[products ids='$product_ids_str']");
}

Herramientas