Cómo mostrar todos los productos comprados por el usuario: historial de compras

Publicado: 2020-08-15

Mostrar productos comprados por el usuario 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 .

mostrar los productos comprados por el usuario

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