Como exibir todos os produtos comprados pelo usuário – histórico de compras
Publicados: 2020-08-15 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 –
 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 .

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
- Como redirecionar na atualização da página do WordPress » Detectar a atualização da página PHP
- Como obter o ID da postagem pelo Slug no WordPress com um exemplo prático
- Como obter o nome da categoria de produto atual no WooCommerce
- Como obter informações do usuário logado no WordPress
- Como ocultar um produto no WooCommerce ou ocultar produtos por categoria ou funções
- Como redirecionar o usuário se não estiver logado no WordPress » Redirecionamento de página
- Como remover itens do menu de administração do WordPress programaticamente sem plug-in
- Como ocultar a barra de administração para clientes WooCommerce ou por funções de usuário
- Como criar paginação numérica no WordPress sem usar plugin
- Como alterar o link de retorno à loja no Woocommerce
- WooCommerce Logout sem confirmação: Como remover “Tem certeza de que deseja sair?”
- Como obter a função de usuário atual no WordPress e funções de exibição
- Como redirecionar uma página do WordPress sem plugins?
- Como verificar se o plugin está ativo no WordPress [3 MANEIRAS]
- Como adicionar uma barra lateral ao WordPress » Guia passo a passo definitivo
- Como redirecionar usuários após login bem-sucedido no WordPress sem usar um plug-in
- Como registrar uma barra lateral no tema WordPress » Passo a passo [Exemplo de widget de cabeçalho]
- Como redirecionar para o carrinho após o login no WooCommerce
- Como verificar se o usuário está logado no WordPress
- Como exibir o texto de disponibilidade de estoque no WooCommerce » Em estoque e fora
