Задать вопрос
devellopah
@devellopah

Как отправить содержимое корзины на почту с помощью cf7?

Пишу каталог на woocommerce. Когда наберу корзину и вызову форму с заявкой, нужно отправить информацию о содержимом корзины на момент отправки заявки. Заказчику нужно знать, что там в корзину накидал потенциальный покупатель.
Подскажите, как это сделать?
  • Вопрос задан
  • 368 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
Ну если без cf7, то кодом сформировать текст письма и через функцию wp_mail отправить.
Если загляните внутрь функции, там есть интересные хуки для корректировки данных отправителя.
Ответ написан
devellopah
@devellopah Автор вопроса
в-общем, нашёл такой фильтр wpcf7_posted_data и вроде всё было неплохо
function krona_filter_wpcf7_posted_data( $posted_data ) {
	// make filter magic happen here...

	if( isset( $posted_data['your-cart'] ) ) {
		$posted_data['your-cart'] = "<span style='color: green; text-style: italic;'>здесь будет информация о товарах</span>";
	}

    return $posted_data;
};
add_filter( 'wpcf7_posted_data', 'krona_filter_wpcf7_posted_data', 10, 1 );


... и заработало, но, когда попытался сделать такое...
$count = WC()->cart->get_cart_contents_count();

	if( isset( $posted_data['your-cart'] ) ) {
		$posted_data['your-cart'] = "<span style='color: green; text-style: italic;'>всего товаров в корзине" . $count . "</span>";
	}


получил 500 ошибку при отправке формы(

Решил оставить пока и попробовать через js и сделал так

$("#wpcf7-f44-o5 .wpcf7-submit").on('click', function(e) {
		e.preventDefault();
		var $form = $(this.form);

		var $cart = $('#side_cart');

		var quantity = '<div>Товаров в корзине: ' + $cart.data('count') + ' шт.</div>';
		var price = '<div>На сумму: ' + $cart.data('total') + ' руб.</div>';

		var info = $cart.find('.js-side-cart-item').map(function(i, el) {
			var $item = $(el);
			return "<div>" + $item.data('name') + ", цена " + $item.data('price') + " руб, кол-во " + $item.data('quantity') + " шт.</div>";
		}).get().join('');

		$form.find('[name="your-cart"]').val('<div>Корзина</div>' + quantity + price + info + '</div>');

		$form.trigger('submit');
	});


Не самое лучшее решение, предпочтительнее было бы через php, но что-то не выходит через хуки cf7 добиться желаемого.
Ответ написан
Ваш ответ на вопрос

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

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