Cum să afișați toate produsele achiziționate de utilizator – Istoricul achizițiilor

Publicat: 2020-08-15

Afișați produsele achiziționate de utilizator Dacă doriți să afișați produsele achiziționate de către utilizator sau să afișați întregul istoric de achiziții pentru un anumit utilizator, puteți realiza acest lucru folosind codul distribuit în această postare. În mod ideal, toate comenzile clienților sau istoricul achizițiilor sunt salvate în tabelul de postări din baza de date WordPress – wp_posts . Prin urmare, puteți obține datele din tabelul bazei de date folosind get_post(). funcția așa cum voi ilustra folosind un exemplu.

Afișează produse WooCommerce achiziționate de utilizator

Primul pas pentru a afișa produsele achiziționate de client, trebuie să obținem detaliile clientului și putem folosi funcția wp_get_current_user() care returnează obiectul utilizatorului curent.

Pasul 1: Creați funcția pentru a afișa istoricul clienților și pentru a obține detalii despre utilizator

De exemplu, funcția și obțineți detaliile utilizatorului curent după cum urmează:

 funcția njengah_get_customer_purchase_history(){

     // Obține obiectul utilizatorului curent 
      $current_user = wp_get_current_user();
     // Verificați dacă utilizatorul este valid 
      if ( 0 == $ curent_utilizator->ID ) return;

}

Funcția wp_get_current_user() preia obiectul utilizator și, alternativ, puteți utiliza o funcție precum get_current_user_id() care preia direct ID-ul utilizatorului curent .

Pasul 2: Obțineți comenzile utilizatorilor atât finalizate, cât și procesate

În acest pas trebuie să folosim funcția get_posts() și să transmitem arg -urile cu ID-ul utilizatorului pe care l-am obținut în primul pas și în acest caz id-ul utilizatorului va fi transmis ca meta_value în $args . Așa că începem prin a crea matricea de argumente pe care o vom transmite funcției get_posts().

 //Creează o matrice $args 
    $args = matrice(
	'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() ),
    );

După crearea argumentelor, nu trecem matricea $args funcției get_posts() ca parametru, după cum urmează:

 $comenzi_client = get_posts( $args);

Înainte de a trece la pasul următor, combinăm codul din pasul 1 și pasul 2 , iar codul combinat ar trebui să fie după cum urmează:

 funcția njengah_get_customer_purchase_history(){

     // Obține obiectul utilizatorului curent 
       $current_user = wp_get_current_user();
	  
     // Verificați dacă utilizatorul este valid 
       if ( 0 == $ curent_utilizator->ID ) return;
	  
	 //Creează o matrice $args 
	   $args = matrice(
		   '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() ),
		);
	  
	  // Transmite $args la funcția get_posts(). 
	  $comenzi_client = get_posts( $args);
	   

}

În acest pas, avem acum tot istoricul de achiziții al clientului anterior ca o matrice pe care o vom parcurge pentru a obține ID-urile produselor în pasul următor.

Pasul 3: Buclă prin comenzile clienților și codurile de returnare a produselor gata pentru afișare

În acest pas trebuie să parcurgem comenzile pe care le-am obținut în pasul anterior și să returnăm o matrice cu ID-urile produsului. Putem face acest lucru folosind următorul cod folosind bucla foreach.

 // parcurge comenzile și returnează ID-urile 
    if ( ! $comenzi_client ) return;
	$produs_ids = array();
	foreach ( $comenzi_client ca $comanda_client ) {
	    $comanda = wc_get_order( $comanda_client->ID );
		$articole = $comanda->get_items();
		foreach ( $articole ca $item ) {
			$product_id = $articol->get_product_id();
			$product_ids[] = $product_id;
		}
	}
		
   returnează $product_ids;

Acum putem combina codul din pasul 1, pasul 2 și pasul 3 pentru a avea codul complet după cum urmează:

 funcția njengah_get_customer_purchase_history(){

     // Obține obiectul utilizatorului curent 
       $current_user = wp_get_current_user();
	  
     // Verificați dacă utilizatorul este valid 
       if ( 0 == $ curent_utilizator->ID ) return;
	  
	 //Creează o matrice $args 
	   $args = matrice(
		   '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() ),
		);
	  
	  // Transmite $args la funcția get_posts(). 
	  $comenzi_client = get_posts( $args);
	  
	  // parcurge comenzile și returnează ID-urile 
		if ( ! $comenzi_client ) return;
		$produs_ids = array();
		foreach ( $comenzi_client ca $comanda_client ) {
			$comanda = wc_get_order( $comanda_client->ID );
			$articole = $comanda->get_items();
			foreach ( $articole ca $item ) {
				$product_id = $articol->get_product_id();
				$product_ids[] = $product_id;
			}
		}
		
		returnează $product_ids;
	   
}

Pasul 4: Testarea revenirii funcției

În acest pas putem verifica dacă datele sunt afișate din funcția din pasul 3 folosind funcția print_r() după cum urmează:

 print_r(njengah_get_customer_purchase_history());

Dacă ați urmat toți pașii în mod corect, ar trebui să vedeți datele afișate așa cum se vede în imaginea de mai jos, unde am adăugat afișarea datelor la cârligul de acțiune wp_head .

afișarea produselor achiziționate de utilizator

Acum puteți continua și utiliza aceste date într-un cod scurt sau în dezvoltarea temei sau a pluginului pentru a afișa istoricul achizițiilor oriunde doriți.

Concluzie

În această postare am explicat pas cu pas cum să afișați produsul achiziționat de utilizator în WooCommerce. Utilizarea ideală a acestui cod poate fi în orice logică în care doriți să comparați produsele comandate curent cu produsele comandate anterior. În cele mai multe aplicații practice includ alocarea de reduceri pe baza comenzilor anterioare sau vânzări încrucișate și vânzări superioare.

Articole similare