ユーザーが購入したすべての製品を表示する方法–購入履歴

公開: 2020-08-15

ユーザーが購入した商品を表示する ユーザーが購入した製品を表示したり、特定のユーザーのすべての購入履歴を表示したりする場合は、この投稿で共有されているコードを使用してこれを実現できます。 理想的には、すべての顧客の注文または購入履歴がWordPressデータベースのpostsテーブル( wp_posts )に保存されます。 したがって、 get_post(). 例を使用して説明するように機能します。

ユーザーが購入したWooCommerceディスプレイ製品

顧客が購入した製品を表示する最初のステップでは、顧客の詳細を取得する必要があり、現在のユーザーのオブジェクトを返すwp_get_current_user()関数を使用できます。

ステップ1:顧客履歴を表示してユーザーの詳細を取得する関数を作成する

たとえば、関数と現在のユーザーの詳細を次のように取得します。

 関数njengah_get_customer_purchase_history(){

     //現在のユーザーオブジェクトを取得します 
      $ current_user = wp_get_current_user();
     //ユーザーが有効かどうかを確認します 
      if(0 == $ current_user-> ID)return;

}

wp_get_current_user()関数はユーザーオブジェクトを取得します。代わりに、現在のユーザーIDを直接取得するget_current_user_id()のような関数を使用することもできます。

ステップ2:完了したユーザー注文と処理中のユーザー注文の両方を取得する

このステップでは、 get_posts()関数を使用して、最初のステップで取得したユーザーIDでargsを渡す必要があります。この場合、ユーザーIDは$ argsmeta_valueとして渡されます。 したがって、get_posts()関数に渡す引数配列を作成することから始めます。

 // $ 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())、
    );

引数を作成した後、次のように$ args配列をパラメーターとしてget_posts()関数に渡しません。

 $ customer_orders = get_posts($ args);

次のステップに進む前に、ステップ1とステップ2のコードを結合します。結合されたコードは、次のようになります。

 関数njengah_get_customer_purchase_history(){

     //現在のユーザーオブジェクトを取得します 
       $ current_user = wp_get_current_user();
	  
     //ユーザーが有効かどうかを確認します 
       if(0 == $ current_user-> ID)return;
	  
	 // $ 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())、
		);
	  
	  // $ argsをget_posts()関数に渡します 
	  $ customer_orders = get_posts($ args);
	   

}

このステップでは、前の顧客のすべての購入履歴を配列として取得し、次のステップで製品IDを取得するためにループします。

ステップ3:顧客の注文と返品IDをループして表示できるようにする

このステップでは、前のステップで取得した注文をループして、製品IDを含む配列を返す必要があります。 foreachループを使用して次のコードを使用してこれを行うことができます。

 //注文をループして、IDを返します 
    if(!$ customer_orders)return;
	$ product_ids = array();
	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;
		}
	}
		
   $ product_idsを返します。

これで、ステップ1、ステップ2、およびステップ3のコードを組み合わせて、次のような完全なコードを作成できます。

 関数njengah_get_customer_purchase_history(){

     //現在のユーザーオブジェクトを取得します 
       $ current_user = wp_get_current_user();
	  
     //ユーザーが有効かどうかを確認します 
       if(0 == $ current_user-> ID)return;
	  
	 // $ 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())、
		);
	  
	  // $ argsをget_posts()関数に渡します 
	  $ customer_orders = get_posts($ args);
	  
	  //注文をループして、IDを返します 
		if(!$ customer_orders)return;
		$ product_ids = array();
		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;
			}
		}
		
		$ product_idsを返します。
	   
}

ステップ4:関数リターンのテスト

このステップでは、次のようにprint_r()関数を使用して、ステップ3の関数からデータが表示されているかどうかを確認できます。

 print_r(njengah_get_customer_purchase_history());

すべての手順を正しく実行すると、 wp_headアクションフックにデータ表示を追加した下の画像に示すように、データが表示されるはずです。

ユーザーが購入した商品を表示する

これで、このデータをショートコードで使用したり、テーマやプラグインの開発で使用したりして、購入履歴を好きな場所に表示できます。

結論

この投稿では、ユーザーが購入した商品をWooCommerceで段階的に表示する方法を説明しました。 このコードの理想的な使用法は、現在の注文商品を以前に注文した商品と比較する任意のロジックで使用できます。 ほとんどの実際のアプリケーションでは、以前の注文またはクロスセルとアップセルに基づく割引の割り当てが含まれます。

同様の記事