Как отобразить все продукты, приобретенные пользователем — история покупок
Опубликовано: 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. Идеальное использование этого кода может быть в любой логике, где вы хотите сравнить продукты текущего заказа с ранее заказанными продуктами. В большинстве практических приложений включают распределение скидок на основе предыдущих заказов или перекрестных продаж и допродаж.
Похожие статьи
- Как перенаправить при обновлении страницы WordPress » Обнаружение обновления страницы PHP
- Как получить ID поста с помощью Slug в WordPress на практическом примере
- Как получить текущее название категории продукта в WooCommerce
- Как получить информацию о зарегистрированном пользователе в WordPress
- Как скрыть продукт в WooCommerce или скрыть продукты по категориям или ролям
- Как перенаправить пользователя, если он не вошел в систему WordPress » Перенаправление страницы
- Как удалить элементы меню администратора WordPress программно без плагина
- Как скрыть панель администратора для клиентов WooCommerce или по ролям пользователей
- Как создать нумерацию страниц в WordPress без использования плагина
- Как изменить ссылку возврата в магазин в Woocommerce
- Выход из WooCommerce без подтверждения: как удалить «Вы уверены, что хотите выйти?»
- Как получить текущую роль пользователя в WordPress и отображать роли
- Как перенаправить страницу WordPress без плагинов?
- Как проверить, активен ли плагин в WordPress [3 СПОСОБА]
- Как добавить боковую панель в WordPress » Полное пошаговое руководство
- Как перенаправить пользователей после успешного входа в WordPress без использования плагина
- Как зарегистрировать боковую панель в теме WordPress » Шаг за шагом [Пример виджета заголовка]
- Как перенаправить в корзину после входа в WooCommerce
- Как проверить, авторизован ли пользователь в WordPress
- Как отобразить текст о наличии на складе в WooCommerce » В наличии и в наличии