Como exibir todos os produtos comprados pelo usuário – histórico de compras

Publicados: 2020-08-15

Exibir produtos comprados pelo usuário Se você deseja exibir produtos comprados por usuário ou exibir todo o histórico de compras de um usuário específico, pode fazer isso usando o código compartilhado neste post. Idealmente, todos os pedidos de clientes ou histórico de compras são salvos na tabela de postagens no banco de dados do WordPress – wp_posts . Você pode, portanto, obter os dados da tabela do banco de dados usando get_post(). função como vou ilustrar usando um exemplo.

Produtos de exibição WooCommerce comprados pelo usuário

O primeiro passo para exibir os produtos adquiridos pelo cliente, precisamos obter os detalhes do cliente e podemos fazer uso da função wp_get_current_user() que retorna o objeto do usuário atual.

Etapa 1: criar a função para exibir o histórico do cliente e obter detalhes do usuário

Por exemplo, a função e obter os detalhes do usuário atual da seguinte forma:

 function njengah_get_customer_purchase_history(){

     // Obtém o objeto do usuário atual 
      $current_user = wp_get_current_user();
     // Verifica se o usuário é válido 
      if ( 0 == $current_user->ID ) return;

}

A função wp_get_current_user() recupera o objeto do usuário e, alternativamente, você pode usar uma função como get_current_user_id() que recupera diretamente o ID do usuário atual .

Etapa 2: obter os pedidos do usuário concluídos e em processamento

Neste passo precisamos usar a função get_posts() e passar os args com o ID do usuário que obtivemos no primeiro passo e neste caso o ID do usuário será passado como o meta_value no $args . Então começamos criando o array de argumentos que passaremos para a função get_posts().

 //Cria o array $args 
    $args = 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() ),
    );

Depois de criar os argumentos, não passamos o array $args para a função get_posts() como parâmetro da seguinte forma:

 $customer_orders = get_posts( $args);

Antes de passarmos para a próxima etapa, combinamos o código da etapa 1 e da etapa 2 e o código combinado deve ser o seguinte:

 function njengah_get_customer_purchase_history(){

     // Obtém o objeto do usuário atual 
       $current_user = wp_get_current_user();
	  
     // Verifica se o usuário é válido 
       if ( 0 == $current_user->ID ) return;
	  
	 //Cria o array $args 
	   $args = 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() ),
		);
	  
	  // Passa o $args para a função get_posts() 
	  $customer_orders = get_posts( $args);
	   

}

Nesta etapa, agora temos todo o histórico de compras do cliente anterior como uma matriz que percorreremos para obter os IDs dos produtos na próxima etapa.

Etapa 3 : Faça um loop pelos pedidos do cliente e devolva os IDs dos produtos prontos para exibição

Nesta etapa, precisamos percorrer os pedidos que obtivemos na etapa anterior e retornar um array com os IDs dos produtos. Podemos fazer isso usando o código a seguir usando o loop foreach.

 // percorre os pedidos e retorna os IDs 
    if (! $customer_orders) return;
	$product_ids = array();
	foreach ( $customer_orders as $customer_order) {
	    $pedido = wc_get_order($pedido_cliente->ID);
		$itens = $pedido->get_items();
		foreach ( $ itens como $ item ) {
			$product_id = $item->get_product_id();
			$product_ids[] = $product_id;
		}
	}
		
   retornar $product_ids;

Agora podemos combinar o código na etapa 1, etapa 2 e etapa 3 para ter o código completo da seguinte forma:

 function njengah_get_customer_purchase_history(){

     // Obtém o objeto do usuário atual 
       $current_user = wp_get_current_user();
	  
     // Verifica se o usuário é válido 
       if ( 0 == $current_user->ID ) return;
	  
	 //Cria o array $args 
	   $args = 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() ),
		);
	  
	  // Passa o $args para a função get_posts() 
	  $customer_orders = get_posts( $args);
	  
	  // percorre os pedidos e retorna os IDs 
		if (! $customer_orders) return;
		$product_ids = array();
		foreach ( $customer_orders as $customer_order) {
			$pedido = wc_get_order($pedido_cliente->ID);
			$itens = $pedido->get_items();
			foreach ( $ itens como $ item ) {
				$product_id = $item->get_product_id();
				$product_ids[] = $product_id;
			}
		}
		
		retornar $product_ids;
	   
}

Etapa 4: Testando o retorno da função

Nesta etapa, podemos verificar se os dados são exibidos da função na etapa 3 usando a função print_r() da seguinte forma:

 print_r(njengah_get_customer_purchase_history());

Se você seguiu todas as etapas da maneira correta, deverá ver os dados exibidos como na imagem abaixo, onde adicionei a exibição de dados ao gancho de ação wp_head .

exibir produtos comprados pelo usuário

Agora você pode usar esses dados em um shortcode ou no desenvolvimento de seu tema ou plugin para exibir o histórico de compras em qualquer lugar que desejar.

Conclusão

Neste post expliquei passo a passo como exibir o produto comprado pelo usuário no WooCommerce. O uso ideal deste código pode ser em qualquer lógica onde você queira comparar os produtos do pedido atual com os produtos pedidos anteriormente. Na maioria das aplicações práticas incluem a atribuição de descontos com base em pedidos anteriores ou vendas cruzadas e vendas ascendentes.

Artigos semelhantes