Come visualizzare tutti i prodotti acquistati dall'utente – Cronologia acquisti

Pubblicato: 2020-08-15

Visualizza i prodotti acquistati dall'utente Se desideri visualizzare i prodotti acquistati dall'utente o visualizzare tutta la cronologia degli acquisti per un utente specifico, puoi farlo utilizzando il codice condiviso in questo post. Idealmente, tutti gli ordini dei clienti o la cronologia degli acquisti vengono salvati nella tabella dei post nel database di WordPress: wp_posts . È quindi possibile ottenere i dati dalla tabella del database utilizzando get_post(). funzione come illustrerò usando un esempio.

Prodotti di visualizzazione WooCommerce acquistati dall'utente

Il primo passo per visualizzare i prodotti acquistati dal cliente, dobbiamo ottenere i dettagli del cliente e possiamo utilizzare la funzione wp_get_current_user() che restituisce l'oggetto dell'utente corrente.

Passaggio 1: crea la funzione per visualizzare la cronologia dei clienti e ottenere i dettagli dell'utente

Ad esempio la funzione e ottenere i dettagli dell'utente corrente come segue:

 funzione njengah_get_customer_purchase_history(){

     // Ottieni l'oggetto utente corrente 
      $utente_corrente = wp_get_utente_corrente();
     // Controlla se l'utente è valido 
      if ( 0 == $utente_corrente->ID ) restituisce;

}

La funzione wp_get_current_user() recupera l'oggetto utente e in alternativa puoi usare una funzione come get_current_user_id() che recupera direttamente l' ID utente corrente .

Passaggio 2: ottieni gli ordini degli utenti sia completati che in elaborazione

In questo passaggio dobbiamo usare la funzione get_posts() e passare gli args con l'ID utente che abbiamo ottenuto nel primo passaggio e in questo caso l'id utente verrà passato come meta_value nel $args . Quindi iniziamo creando l'array di argomenti che passeremo alla funzione get_posts().

 //Crea $args array 
    $args = array(
	'numeri' => -1,
	'meta_key' => '_cliente_utente',
	'meta_value' => $utente_corrente->ID,
  	'post_type' => wc_get_order_types(),
	'post_status' => array_keys(wc_get_is_paid_statuses() ),
    );

Dopo aver creato gli argomenti non passiamo l'array $args alla funzione get_posts() come parametro come segue:

 $ ordini_clienti = get_posts($args);

Prima di passare al passaggio successivo, combiniamo il codice nel passaggio 1 e nel passaggio 2 e il codice combinato dovrebbe essere il seguente:

 funzione njengah_get_customer_purchase_history(){

     // Ottieni l'oggetto utente corrente 
       $utente_corrente = wp_get_utente_corrente();
	  
     // Controlla se l'utente è valido 
       if ( 0 == $utente_corrente->ID ) restituisce;
	  
	 //Crea $args array 
	   $args = array(
		   'numeri' => -1,
			'meta_key' => '_cliente_utente',
			'meta_value' => $utente_corrente->ID,
			'post_type' => wc_get_order_types(),
			'post_status' => array_keys(wc_get_is_paid_statuses() ),
		);
	  
	  // Passa la funzione $args a get_posts() 
	  $ ordini_clienti = get_posts($args);
	   

}

In questo passaggio abbiamo ora tutta la cronologia degli acquisti del cliente precedente come un array che andremo a scorrere per ottenere gli ID dei prodotti nel passaggio successivo.

Passaggio 3: scorrere gli ordini dei clienti e restituire gli ID dei prodotti pronti per la visualizzazione

In questo passaggio dobbiamo scorrere gli ordini ottenuti nel passaggio precedente e restituire un array con gli ID prodotto. Possiamo farlo usando il codice seguente usando foreach loop.

 // scorre gli ordini e restituisce gli ID 
    if ( ! $customer_orders ) ritorna;
	$ID_prodotto = array();
	foreach ( $customer_orders as $customer_order ) {
	    $ordine = wc_get_ordine($ordine_cliente->ID);
		$items = $ordine->get_items();
		foreach ( $ articoli come $ articolo ) {
			$id_prodotto = $elemento->get_id_prodotto();
			$ID_prodotto[] = $id_prodotto;
		}
	}
		
   restituisce $ID_prodotto;

Ora possiamo combinare il codice nel passaggio 1, passaggio 2 e passaggio 3 per avere il codice completo come segue:

 funzione njengah_get_customer_purchase_history(){

     // Ottieni l'oggetto utente corrente 
       $utente_corrente = wp_get_utente_corrente();
	  
     // Controlla se l'utente è valido 
       if ( 0 == $utente_corrente->ID ) restituisce;
	  
	 //Crea $args array 
	   $args = array(
		   'numeri' => -1,
			'meta_key' => '_cliente_utente',
			'meta_value' => $utente_corrente->ID,
			'post_type' => wc_get_order_types(),
			'post_status' => array_keys(wc_get_is_paid_statuses() ),
		);
	  
	  // Passa la funzione $args a get_posts() 
	  $ ordini_clienti = get_posts($args);
	  
	  // scorre gli ordini e restituisce gli ID 
		if ( ! $customer_orders ) ritorna;
		$ID_prodotto = array();
		foreach ( $customer_orders as $customer_order ) {
			$ordine = wc_get_ordine($ordine_cliente->ID);
			$items = $ordine->get_items();
			foreach ( $ articoli come $ articolo ) {
				$id_prodotto = $elemento->get_id_prodotto();
				$ID_prodotto[] = $id_prodotto;
			}
		}
		
		restituisce $ID_prodotto;
	   
}

Passaggio 4: verifica della funzione di ritorno

In questo passaggio possiamo verificare se i dati vengono visualizzati dalla funzione nel passaggio 3 utilizzando la funzione print_r() come segue:

 print_r(njengah_get_customer_purchase_history());

Se hai seguito tutti i passaggi nel modo giusto, dovresti vedere i dati visualizzati come mostrato nell'immagine sottostante in cui ho aggiunto la visualizzazione dei dati all'action hook wp_head .

visualizzare i prodotti acquistati dall'utente

Ora puoi andare avanti e utilizzare questi dati in uno shortcode o nello sviluppo del tuo tema o plug-in per visualizzare la cronologia degli acquisti ovunque desideri.

Conclusione

In questo post ti ho spiegato passo passo come visualizzare in WooCommerce il prodotto acquistato dall'utente. L'uso ideale di questo codice può essere in qualsiasi logica in cui si voglia confrontare i prodotti dell'ordine corrente con i prodotti ordinati in precedenza. Nella maggior parte delle applicazioni pratiche includono l'assegnazione di sconti in base a ordini precedenti o vendite incrociate e vendite in aumento.

Articoli simili