nipopadyuk
@nipopadyuk

Как отправить содержимое корзины Woocommerce через contact form 7?

Всем привет. Имеется сайт - магазин цветов на WP + WC.
Делаем функционал "Собрать букет по фото", настроили форму, но нужно, чтобы была возможность выбрать из постоянно обновляемого каталога допы (открытки, игрушки, конфеты, обертка и т.д.).

Вариант в голове пока один - Во всплывающем окне показываем сетку товаров из нужной категории, и просим добавить в корзину нужное. После отправляем менеджеру форму + содержимое корзины, а саму корзину очищаем.

Пробовал через Contact Form 7 Dynamic Text Extension, но результат вышел не очень:
60092859ccfb2807411962.png

Может кто-то знает, как это грамотнее реализовать?
  • Вопрос задан
  • 525 просмотров
Решения вопроса 1
nipopadyuk
@nipopadyuk Автор вопроса
Не претендую на оригинальность решения, но это работает. Добавляем названия товаров которые есть в корзине в конец письма конкретной формы.
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_start_function' );
function wpcf7_before_send_mail_start_function($cf7){
 	$mail=$cf7->prop('mail');
	if($mail){
		$contact_form = $cf7->get_current();
		$contact_form_id = $contact_form -> id;
		if ($contact_form_id == 8261){
			if ( !is_admin()){ 
			$product_name = "";
			wc()->frontend_includes();
			WC()->session = new WC_Session_Handler();
			WC()->session->init();
			WC()->customer = new WC_Customer( get_current_user_id(), true );
			WC()->cart = new WC_Cart();
			foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
				$_product   = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
				$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
				if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_widget_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
					$product_name = $product_name.apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key )."\n";
				}
				}
				$my = $product_name;
			}else{
				$my = "";
			} 

		 $mail['body'].="\n\r".$my; // допишем в конец тела писма содержимое корзины
		 
		 
		 WC()->cart->empty_cart();
         WC()->session->set('cart', array());
		}
	 $cf7->set_properties(array('mail'=>$mail));
	} 
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы