Все что связано с процессом непосредственно заказа. Особенно после того как пользователь нажимает кнопку Оформить заказ.
Редирект после оформления заказа
После оформления стандартного заказа woocommerce происходит редирект на шаблон успешного заказа. Пример URL:
https://site.ru/checkout/order-received/6466/?key=wc_order_5b09a31dedcb2
Можно сделать редирект на произвольную страницу:
add_action( 'woocommerce_thankyou', 'bbloomer_redirectcustom'); function bbloomer_redirectcustom( $order_id ){ $order = new WC_Order( $order_id ); $url = 'https://site.ru/category/stati/'; if ( $order->status != 'failed' ) { wp_redirect($url); exit; } }
Еще один способ сделать редирект (с помощью js):
add_action( 'woocommerce_thankyou', 'bbloomer_redirectcustom'); function bbloomer_redirectcustom( $order_id ){ $order = new WC_Order( $order_id ); $url = 'http://yoursite.com/custom-url'; if ( $order->status != 'failed' ) { echo "<script type='text/javascript'>window.location = '" . $url . "'</script>"; } }
Минусом второго способа является, то что пользователь кратковременно видит страницу успешного заказа, и после этого происходит редирект.
Редирект после оформления заказа методом Яндекс
Это уже сложнее, т.к. по умолчанию при выборе метода оплаты Яндекс Кассой (Банковскими картами, Яндекс Кошелек, и т.д.) происходит переадрессация на сервис Яндекс.
Изменяем плагин Яндекс.Касса 2.0 для Woocommerce
В файле плагина yandex-money-checkout/gateway/YandexMoneyCheckoutGateway.php (для варианта оплаты банковскими картами) изменяем строки 245-247
} elseif ($result->confirmation->type == ConfirmationType::REDIRECT) { return array('result' => 'success', 'redirect' => $result->confirmation->confirmationUrl); }
добавляя свое условие, в зависимости от статуса заказа:
} elseif ($result->confirmation->type == ConfirmationType::REDIRECT) { if('processing' == $order_status){ return array('result' => 'success', 'redirect' => $result->confirmation->confirmationUrl); } else { return array('result' => 'success', 'redirect' => $order->get_checkout_order_received_url()); } }
Теперь при оформлении заказа пользователя будет перекидывать на шаблон успешного заказа и из личного кабинета, при попытке оплатить он также будет снова перекинут на страницу заказа. А при изменении статуса заказа на В обработке, и при оплате из личного кабинета пользователь будет перенаправлен в платежный модуль Яндекс.
Изменение заказа
Изменение состава заказа доступно при статусах На удержании (первый статус при оплате оффлайн), В ожидании оплаты (первый статус при оплате онлайн).
Состав заказа можно менять только из админки. Менять можно Наименование (удаляя имеющиеся позиции и добавляя новые), Количество, и локально (только для этого заказа) Цены на позиции. После изменения заказа необходимо внизу под заказом нажимать кнопку Пересчитать.
Поменять способ оплаты
Также можно поменять любые данные по заказу, в т.ч. способ оплаты. Дело в том, что иконки редактирования не вполне очевидны:
Все это можно сделать и через БД
Сам заказ в таблице wp_posts, все параметры заказа в таблице wp_postmeta (ищем нужный заказ по post_id). Для изменения способа оплаты меняем две строки:
_payment_method (cod — оплата наличными, paykeeper — оплата эл.платежем Paykeeper, bacs — прямой банковский перевод) и _payment_method_title (текстовое название способа оплаты).
[site-socialshare]
Можно управлять заказами по Е-майл? Можно ли сделать?
Как пример: пришло пользователю письмо с его заказом, внизу письма ссылка (кнопка) «Отказаться от заказа», при нажатии происходит отмена заказа не посещая сайт.
Или пришло письмо админу о новом заказе, в самом низу письма кнопка «Заказ выполнен» при нажатии на неё переход по ссылке и статус заказа меняеться не заходя в админку.
Возможно такое?