Как отобразить все продукты, приобретенные пользователем — история покупок

Опубликовано: 2020-08-15

Показать продукты, приобретенные пользователем Если вы хотите отобразить продукты, приобретенные пользователем, или отобразить всю историю покупок для определенного пользователя, вы можете сделать это с помощью кода, опубликованного в этом посте. В идеале все заказы клиентов или история покупок сохраняются в таблице сообщений в базе данных WordPress — wp_posts . Таким образом, вы можете получить данные из таблицы базы данных с помощью функции get_post(). функцию, как я проиллюстрирую на примере.

WooCommerce Отображение продуктов, приобретенных пользователем

Первым шагом для отображения продуктов, приобретенных покупателем, нам нужно получить подробную информацию о покупателе , и мы можем использовать wp_get_current_user() , которая возвращает объект текущего пользователя.

Шаг 1. Создайте функцию для отображения истории клиентов и получения сведений о пользователе.

Например, функция и получить текущие данные пользователя следующим образом:

 функция njengah_get_customer_purchase_history(){

     // Получить текущий пользовательский объект 
      $current_user = wp_get_current_user();
     // Проверяем, действителен ли пользователь 
      если (0 == $current_user->ID) вернуть;

}

Функция wp_get_current_user() извлекает объект пользователя, и в качестве альтернативы вы можете использовать такую ​​функцию, как get_current_user_id() , которая напрямую извлекает текущий идентификатор пользователя .

Шаг 2: Получите завершенные и обработанные заказы пользователей

На этом шаге нам нужно использовать функцию get_posts() и передать аргументы с идентификатором пользователя, который мы получили на первом шаге, и в этом случае идентификатор пользователя будет передан как мета_значение в $args . Итак, мы начнем с создания массива аргументов, который мы передадим функции get_posts().

 //Создаем массив $args 
    $аргументы = массив(
	'цифровые столбы' => -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();
	  
     // Проверяем, действителен ли пользователь 
       если (0 == $current_user->ID) вернуть;
	  
	 //Создаем массив $args 
	   $аргументы = массив(
		   'цифровые столбы' => -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);
	   

}

На этом шаге у нас есть вся история покупок предыдущего клиента в виде массива , который мы будем перебирать, чтобы получить идентификаторы продуктов на следующем шаге.

Шаг 3: Цикл через заказы клиентов и возврат идентификаторов продуктов, готовых к отображению

На этом шаге нам нужно перебрать заказы, полученные на предыдущем шаге, и вернуть массив с идентификаторами продуктов. Мы можем сделать это, используя следующий код, используя цикл foreach.

 // проходим по ордерам и возвращаем идентификаторы 
    если ( ! $customer_orders ) вернуть;
	$product_ids = массив();
	foreach ($customer_orders как $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();
	  
     // Проверяем, действителен ли пользователь 
       если (0 == $current_user->ID) вернуть;
	  
	 //Создаем массив $args 
	   $аргументы = массив(
		   'цифровые столбы' => -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);
	  
	  // проходим по ордерам и возвращаем идентификаторы 
		если ( ! $customer_orders ) вернуть;
		$product_ids = массив();
		foreach ($customer_orders как $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: Проверка возврата функции

На этом шаге мы можем проверить, отображаются ли данные из функции на шаге 3, используя функцию print_r() следующим образом:

 print_r(njengah_get_customer_purchase_history());

Если вы правильно выполнили все шаги, вы должны увидеть данные, отображаемые так, как показано на изображении ниже, где я добавил отображение данных в хук действия wp_head .

отображать товары, купленные пользователем

Теперь вы можете использовать эти данные в шорткоде, в своей теме или разработке плагина, чтобы отображать историю покупок в любом месте.

Вывод

В этом посте я объяснил, как шаг за шагом отобразить продукт, купленный пользователем в WooCommerce. Идеальное использование этого кода может быть в любой логике, где вы хотите сравнить продукты текущего заказа с ранее заказанными продуктами. В большинстве практических приложений включают распределение скидок на основе предыдущих заказов или перекрестных продаж и допродаж.

Похожие статьи