Cómo mostrar todos los productos comprados por el usuario: historial de compras
Publicado: 2020-08-15 Si desea mostrar los productos comprados por el usuario o mostrar todo el historial de compras de un usuario específico, puede lograrlo utilizando el código compartido en esta publicación. Idealmente, todos los pedidos de los clientes o el historial de compras se guardan en la tabla de publicaciones en la base de datos de WordPress: wp_posts
. Por lo tanto, puede obtener los datos de la tabla de la base de datos utilizando get_post().
como lo ilustraré usando un ejemplo.
Productos de exhibición de WooCommerce comprados por el usuario
El primer paso para mostrar los productos comprados por el cliente, necesitamos obtener los detalles del cliente y podemos hacer uso de la función wp_get_current_user()
que devuelve el objeto del usuario actual.
Paso 1: cree la función para mostrar el historial del cliente y obtener detalles del usuario
Por ejemplo, la función y obtener los detalles del usuario actual de la siguiente manera:
función njengah_get_customer_purchase_history(){ // Obtener el objeto de usuario actual $usuario_actual = wp_get_usuario_actual(); // Comprobar si el usuario es válido if ( 0 == $usuario_actual->ID ) return; }
La función wp_get_current_user()
recupera el objeto de usuario y, alternativamente, puede usar una función como get_current_user_id()
que recupera directamente el ID de usuario actual .
Paso 2: Obtener los pedidos de los usuarios completados y procesados
En este paso, necesitamos usar la función get_posts() y pasar los argumentos con el ID de usuario que obtuvimos en el primer paso y, en este caso, el ID de usuario se pasará como meta_valor en $args . Así que comenzamos creando la matriz de argumentos que pasaremos a la función get_posts().
//Crear matriz $args $argumentos = matriz( 'postes numéricos' => -1, 'meta_clave' => '_usuario_cliente', 'meta_value' => $usuario_actual->ID, 'tipo_post' => wc_get_order_types(), 'post_status' => array_keys( wc_get_is_paid_statuses() ), );
Después de crear los argumentos, no pasamos la matriz $args a la función get_posts() como parámetro de la siguiente manera:
$pedidos_clientes = get_posts( $argumentos);
Antes de pasar al siguiente paso, combinamos el código en el paso 1 y el paso 2 y el código combinado debe ser el siguiente:
función njengah_get_customer_purchase_history(){ // Obtener el objeto de usuario actual $usuario_actual = wp_get_usuario_actual(); // Comprobar si el usuario es válido if ( 0 == $usuario_actual->ID ) return; //Crear matriz $args $argumentos = matriz( 'postes numéricos' => -1, 'meta_clave' => '_usuario_cliente', 'meta_value' => $usuario_actual->ID, 'tipo_post' => wc_get_order_types(), 'post_status' => array_keys( wc_get_is_paid_statuses() ), ); // Pasar los $args a la función get_posts() $pedidos_clientes = get_posts( $argumentos); }
En este paso, ahora tenemos todo el historial de compras del cliente anterior como una matriz que recorreremos para obtener las identificaciones de los productos en el siguiente paso.
Paso 3: Recorra los pedidos de los clientes y las identificaciones de los productos devueltos listos para mostrar
En este paso, debemos recorrer los pedidos que obtuvimos en el paso anterior y devolver una matriz con las ID de los productos. Podemos hacerlo usando el siguiente código usando el bucle foreach.
// recorrer los pedidos y devolver los ID if ( ! $pedidos_clientes ) regresa; $product_ids = array(); foreach ($pedidos_clientes como $pedidos_clientes) { $pedido = wc_get_order( $pedido_cliente->ID ); $artículos = $pedido->get_items(); foreach ($ artículos como $ artículo) { $product_id = $item->get_product_id(); $product_ids[] = $product_id; } } devolver $product_ids;
Ahora podemos combinar el código en el paso 1, paso 2 y paso 3 para tener el código completo de la siguiente manera:
función njengah_get_customer_purchase_history(){ // Obtener el objeto de usuario actual $usuario_actual = wp_get_usuario_actual(); // Comprobar si el usuario es válido if ( 0 == $usuario_actual->ID ) return; //Crear matriz $args $argumentos = matriz( 'postes numéricos' => -1, 'meta_clave' => '_usuario_cliente', 'meta_value' => $usuario_actual->ID, 'tipo_post' => wc_get_order_types(), 'post_status' => array_keys( wc_get_is_paid_statuses() ), ); // Pasar los $args a la función get_posts() $pedidos_clientes = get_posts( $argumentos); // recorrer los pedidos y devolver los ID if ( ! $pedidos_clientes ) regresa; $product_ids = array(); foreach ($pedidos_clientes como $pedidos_clientes) { $pedido = wc_get_order( $pedido_cliente->ID ); $artículos = $pedido->get_items(); foreach ($ artículos como $ artículo) { $product_id = $item->get_product_id(); $product_ids[] = $product_id; } } devolver $product_ids; }
Paso 4: Probar el retorno de la función
En este paso, podemos verificar si los datos se muestran desde la función en el paso 3 usando la función print_r() de la siguiente manera:
print_r(njengah_get_customer_purchase_history());
Si siguió todos los pasos de la manera correcta, debería ver los datos mostrados como se ve en la imagen a continuación, donde agregué la visualización de datos al enlace de acción wp_head .
Ahora puede seguir adelante y usar estos datos en un código abreviado o en el desarrollo de su tema o complemento para mostrar el historial de compras en cualquier lugar que desee.
Conclusión
En esta publicación he explicado cómo mostrar el producto comprado por el usuario en WooCommerce paso a paso. El uso ideal de este código puede ser en cualquier lógica en la que desee comparar los productos del pedido actual con los productos pedidos anteriormente. En la mayoría de aplicaciones prácticas incluyen la asignación de descuentos basados en pedidos anteriores o ventas cruzadas y ventas ascendentes.
Artículos similares
- Cómo redirigir en la actualización de la página de WordPress » Detectar la actualización de la página PHP
- Cómo obtener ID de publicación por Slug en WordPress con un ejemplo práctico
- Cómo obtener el nombre de la categoría del producto actual en WooCommerce
- Cómo obtener información de usuario iniciada en WordPress
- Cómo ocultar un producto en WooCommerce u ocultar productos por categoría o roles
- Cómo redirigir al usuario si no ha iniciado sesión en WordPress » Redirección de página
- Cómo eliminar elementos del menú de administración de WordPress mediante programación sin complemento
- Cómo ocultar la barra de administración para clientes de WooCommerce o por roles de usuario
- Cómo crear una paginación de números en WordPress sin usar un complemento
- Cómo cambiar el enlace Volver a la tienda en Woocommerce
- Cierre de sesión de WooCommerce sin confirmación: cómo eliminar "¿Está seguro de que desea cerrar sesión?"
- Cómo obtener el rol de usuario actual en WordPress y roles de visualización
- ¿Cómo redirigir una página de WordPress sin complementos?
- Cómo verificar si el complemento está activo en WordPress [3 MANERAS]
- Cómo agregar una barra lateral a WordPress » Guía definitiva paso a paso
- Cómo redirigir a los usuarios después de un inicio de sesión exitoso en WordPress sin usar un complemento
- Cómo registrar una barra lateral en un tema de WordPress » Paso a paso [Ejemplo de widget de encabezado]
- Cómo redirigir al carrito después de iniciar sesión en WooCommerce
- Cómo verificar si el usuario ha iniciado sesión en WordPress
- Cómo mostrar el texto de disponibilidad de stock en WooCommerce » En stock y agotado