Comment afficher tous les produits achetés par l'utilisateur - Historique des achats

Publié: 2020-08-15

Afficher les produits achetés par l'utilisateur Si vous souhaitez afficher les produits achetés par utilisateur ou afficher tout l'historique des achats pour un utilisateur spécifique, vous pouvez y parvenir en utilisant le code partagé dans cet article. Idéalement, toutes les commandes des clients ou l'historique des achats sont enregistrés dans la table des articles de la base de données WordPress - wp_posts . Vous pouvez donc récupérer les données de la table de la base de données à l'aide de get_post(). fonction comme je vais l'illustrer à l'aide d'un exemple.

Produits d'affichage WooCommerce achetés par l'utilisateur

La première étape pour afficher les produits achetés par le client, nous devons obtenir les détails du client et nous pouvons utiliser la fonction wp_get_current_user() qui renvoie l'objet de l'utilisateur actuel.

Étape 1 : Créer la fonction pour afficher l'historique du client et obtenir les détails de l'utilisateur

Par exemple, la fonction et obtenir les détails de l'utilisateur actuel comme suit :

 fonction njengah_get_customer_purchase_history(){

     // Récupère l'objet utilisateur courant 
      $current_user = wp_get_current_user();
     // Vérifie si l'utilisateur est valide 
      if ( 0 == $current_user->ID ) return;

}

La fonction wp_get_current_user() récupère l'objet utilisateur et vous pouvez également utiliser une fonction comme get_current_user_id() qui récupère directement l' ID utilisateur actuel .

Étape 2 : Obtenez les commandes des utilisateurs à la fois terminées et en cours de traitement

Dans cette étape, nous devons utiliser la fonction get_posts() et transmettre les arguments avec l'ID utilisateur que nous avons obtenu lors de la première étape. Dans ce cas, l'ID utilisateur sera transmis en tant que meta_value dans $args . Nous commençons donc par créer le tableau d'arguments que nous passerons à la fonction get_posts().

 //Créer un tableau $args 
    $args = tableau(
	'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() ),
    );

Après avoir créé les arguments, nous ne transmettons pas le tableau $args à la fonction get_posts() en tant que paramètre comme suit :

 $customer_orders = get_posts( $args);

Avant de passer à l'étape suivante, nous combinons le code des étapes 1 et 2 et le code combiné devrait être le suivant :

 fonction njengah_get_customer_purchase_history(){

     // Récupère l'objet utilisateur courant 
       $current_user = wp_get_current_user();
	  
     // Vérifie si l'utilisateur est valide 
       if ( 0 == $current_user->ID ) return;
	  
	 //Créer un tableau $args 
	   $args = tableau(
		   '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() ),
		);
	  
	  // Passe les $args à la fonction get_posts() 
	  $customer_orders = get_posts( $args);
	   

}

Dans cette étape, nous avons maintenant tout l'historique des achats du client précédent sous forme de tableau que nous allons parcourir pour obtenir les identifiants des produits à l'étape suivante.

Étape 3 : bouclez les commandes des clients et retournez les identifiants des produits prêts à être affichés

Dans cette étape, nous devons parcourir les commandes que nous avons obtenues à l'étape précédente et renvoyer un tableau avec les ID de produit. Nous pouvons le faire en utilisant le code suivant en utilisant la boucle foreach.

 // boucle dans les commandes et renvoie les identifiants 
    si ( ! $customer_orders ) retour ;
	$product_ids = tableau();
	foreach ( $customer_orders as $customer_order ) {
	    $order = wc_get_order( $customer_order->ID );
		$items = $order->get_items();
		foreach ( $items as $item ) {
			$product_id = $item->get_product_id();
			$product_ids[] = $product_id ;
		}
	}
		
   renvoie $product_ids ;

Nous pouvons maintenant combiner le code de l'étape 1, de l'étape 2 et de l'étape 3 pour avoir le code complet comme suit :

 fonction njengah_get_customer_purchase_history(){

     // Récupère l'objet utilisateur courant 
       $current_user = wp_get_current_user();
	  
     // Vérifie si l'utilisateur est valide 
       if ( 0 == $current_user->ID ) return;
	  
	 //Créer un tableau $args 
	   $args = tableau(
		   '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() ),
		);
	  
	  // Passe les $args à la fonction get_posts() 
	  $customer_orders = get_posts( $args);
	  
	  // boucle dans les commandes et renvoie les identifiants 
		si ( ! $customer_orders ) retour ;
		$product_ids = tableau();
		foreach ( $customer_orders as $customer_order ) {
			$order = wc_get_order( $customer_order->ID );
			$items = $order->get_items();
			foreach ( $items as $item ) {
				$product_id = $item->get_product_id();
				$product_ids[] = $product_id ;
			}
		}
		
		renvoie $product_ids ;
	   
}

Etape 4 : Tester le retour de fonction

Dans cette étape, nous pouvons vérifier si les données sont affichées à partir de la fonction de l'étape 3 en utilisant la fonction print_r() comme suit :

 print_r(njengah_get_customer_purchase_history());

Si vous avez suivi toutes les étapes de la bonne manière, vous devriez voir les données affichées comme sur l'image ci-dessous où j'ai ajouté l'affichage des données au crochet d'action wp_head .

afficher les produits achetés par l'utilisateur

Vous pouvez maintenant continuer et utiliser ces données dans un shortcode ou dans le développement de votre thème ou plugin pour afficher l'historique des achats où vous le souhaitez.

Conclusion

Dans cet article, j'ai expliqué comment afficher le produit acheté par l'utilisateur dans WooCommerce étape par étape. L'utilisation idéale de ce code peut être dans n'importe quelle logique où vous souhaitez comparer les produits de la commande en cours aux produits précédemment commandés. Dans la plupart des applications pratiques, il convient d'inclure l'attribution de remises en fonction des commandes précédentes ou des ventes croisées et des ventes incitatives.

Articles similaires