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 – 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