Как проверить, что пользователь уже покупал определённый товар? И вывести сообщение об этом.

В этом уроке я на практике научу вас пользоваться функцией wc_customer_bought_product(), которой, когда я начинал работать с WooCommerce, ещё не существовало.

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

Вот, что у нас должно получиться в ходе этого урока:

Сообщение, если клиент уже покупал товар
Конечно это всего лишь пример – тут я добавил сообщение на страницу «Магазин» и в категории товаров, которое отображается под карточкой товара.

А ниже – готовый сниппет кода для functions.php вашей темы или кастомного плагина.

add_action( 'woocommerce_after_shop_loop_item', 'truemisha_if_user_purchased_product', 25 );
 
function truemisha_if_user_purchased_product() {
 
	// не авторизован – ничего не делаем
	if ( ! is_user_logged_in() ) {
		return;
	}
 
	global $product;
	$current_user = wp_get_current_user();
 
	if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product->get_id() ) ) {
		echo '<p>&hearts; ' . $current_user->first_name . ', вы уже покупали этот товар ранее. Хотите купить снова?</p>';
	}
 
}

Также на моём сайте можете отдельно почитать про то, как работают функции is_user_logged_in() и wp_get_current_user().

Миша

Недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.