Jak automatycznie zatwierdzać zamówienia w WooCommerce

Opublikowany: 2020-09-25

Automatyczne zatwierdzanie zamówień WooCommerce Jeśli prowadzisz sklep eCommerce, wiesz, że strona wymaga śledzenia i zarządzania zamówieniami. Może to być jednak uciążliwe zadanie dla administratora, zwłaszcza jeśli w Twoim sklepie internetowym panuje duży ruch, co skutkuje dużą liczbą zamówień w ciągu dnia.

Dodatkowo wiesz, że zamówienie jest tworzone zaraz po zakończeniu procesu realizacji transakcji. Zamówieniu przypisywany jest status w zależności od tego, gdzie zamówienie znajduje się w łańcuchu od płatności do dostawy.

Ponadto statusy ustawiają lub zmieniają WooCommerce, Bramka Płatności oraz administrator sklepu w zależności od tego, gdzie inicjowane jest zamówienie.

Po zrealizowaniu płatności za zamówienie, jeśli użytkownik nie wybrał opcji płatności za pobraniem. Po zrealizowaniu zamówienia jego status jest ustawiany na „Przetwarzanie”, dopóki właściciel sklepu nie zmieni go ręcznie na „Zrealizowane”. Będzie to trudne zadanie dla właściciela sklepu lub administratora.

Automatyczne zatwierdzanie zamówień WooCommerce

W tym krótkim samouczku podzielę się z Tobą niestandardowym kodem PHP, który pomoże Ci automatycznie ustawić status zamówienia jako Ukończone po pomyślnym dokonaniu płatności. Oznacza to, że nawet jeśli użytkownik wybierze opcję Gotówka przy odbiorze, status zamówienia automatycznie zmieni się na Zakończone.

Ponadto podzielę się z Tobą rozwiązaniem, które automatycznie ustawi status zamówienia WooCommerce jako Zakończone dla produktów wirtualnych. Produkty te nie są namacalne ani nie można ich pobrać.

Dzieje się tak, ponieważ subskrypcja członkostwa może nie mieć namacalnej formy, ale zamiast tego ma datę wygaśnięcia. Jeśli masz do czynienia z produktami do pobrania, opcja płatności za pobraniem nie powinna być uwzględniana, ale zamiast tego należy dodać tylko warunek, aby sprawdzić, czy wszystkie produkty w zamówieniu są wirtualne.

Teraz, gdy wiesz już, jak ustawiane są statusy zamówień, oto szczegółowy przewodnik, jak:

  • Automatycznie ustaw status zamówienia WooCommerce jako Zakończone na podstawie metody płatności.
  • Automatycznie ustaw status zamówienia WooCommerce jako Zakończone dla produktów wirtualnych.

a) Kroki, aby automatycznie ustawić status zamówienia WooCommerce jako zakończony na podstawie metody płatności

Oto proste kroki, które musisz wykonać:

  1. Zaloguj się do swojej witryny WordPress i uzyskaj dostęp do pulpitu nawigacyjnego jako administrator.
  2. Z menu Dashboard kliknij menu Wygląd > Menu edytora motywów . Po otwarciu strony Theme Editor poszukaj pliku funkcji motywu, w którym dodamy funkcję, która automatycznie ustawi status zamówienia woocommerce jako zakończony w oparciu o metodę płatności.
  3. Dodaj następujący kod do pliku php :
 /**

Snippet, aby automatycznie ustawić status zamówienia woocommerce jako zakończony na podstawie metody płatności

*/

add_action('woocommerce_order_status_changed', 'njengah_auto_complete_by_payment_method');

funkcja njengah_auto_complete_by_payment_method($order_id)

{

if (! $id_zamówienia) {

powrót;

}

globalny produkt;

$zamówienie = wc_get_order( $order_id );

if ($order->data['status'] == 'przetwarzanie') {

$payment_method=$order->get_payment_method();

jeśli ($payment_method!="bacs")

{

$order->update_status( 'zakończone' );

}

}

}
  1. Aby zobaczyć wynik, przejdź do pulpitu nawigacyjnego WordPress i kliknij WooCommerce > Zamówienia . Zobaczysz, że zamówienie zostało ustawione na Ukończone , jak pokazano poniżej: zatwierdzone zamówienie

Jak działa kod

W powyższym kodzie użyłem haka woocommerce_order_status_changed do wywołania funkcji w przypadku zmiany statusu zamówienia. Sprawdza, czy zamówienie ma status Przetwarzanie i zmienia je na Zrealizowane.

Domyślnie WooCommerce ma cztery domyślne metody płatności, którymi są bezpośredni przelew bankowy (bacs), płatności czekiem (czek), za pobraniem (za pobraniem) i PayPal (PayPal). Musisz jednak określić metodę płatności, dla której ustalasz warunek.

b) Kroki, aby automatycznie ustawić status zamówienia WooCommerce jako zakończony dla produktów wirtualnych

produkt do pobrania: Automatyczne zatwierdzanie zamówień WooCommerce Oto kroki, które musisz wykonać:

  1. Zaloguj się do swojej witryny WordPress i uzyskaj dostęp do pulpitu nawigacyjnego jako administrator.
  2. Z menu Dashboard kliknij menu Wygląd > Menu edytora motywów . Po otwarciu strony Theme Editor poszukaj pliku funkcji motywu, w którym dodamy funkcję, która automatycznie ustawi status zamówienia woocommerce jako zakończony dla produktów wirtualnych.
  3. Dodaj następujący kod do pliku php :
 /**

Snippet, aby automatycznie ustawić status zamówienia woocommerce jako zakończony dla produktów wirtualnych

*/

add_action('woocommerce_order_status_changed', 'njengah_auto_complete_virtual');

funkcja njengah_auto_complete_virtual($order_id)

{

if (! $id_zamówienia) {

powrót;

}

globalny produkt;

$zamówienie = wc_get_order( $order_id );

if ($order->data['status'] == 'przetwarzanie') {

$virtual_order = null;

if ( count( $order->get_items() ) > 0 ) {

foreach( $order->get_items() as $item ) {

if ( 'line_item' == $item['type'] ) {

$_product = $order->get_product_from_item( $item );

if ( ! $_product->is_virtual() ) {

// gdy znajdziemy jeden niewirtualny produkt, wyrwij się z pętli

$virtual_order = false;

złamać;

}

w przeciwnym razie {

$wirtualne_zamówienie = prawda;

}

}

}

}




// jeśli wszystkie są produktami wirtualnymi, oznacz jako zakończone

if ( $virtual_order ) {

$order->update_status( 'zakończone' );

}

}

}

  1. Wynik będzie taki sam jak w pierwszym przykładzie, ponieważ zamówienie zostanie automatycznie ustawione jako Zrealizowane .

Jak działa kod

W powyższym kodzie użyłem tego samego haka do wywołania funkcji njengah_auto_complete_virtual. Po sprawdzeniu, czy jest w stanie Przetwarzanie, kod przechodzi przez każdą pozycję w zamówieniu, aby sprawdzić, czy istnieje produkt wirtualny.

Line_item odnosi się do produktu i tylko produkty muszą być pobierane jeden po drugim, aby sprawdzić, czy są wirtualne. W przypadku braku wirtualnego produktu status zamówienia nie zostanie oznaczony jako Zakończone.

Wniosek

W tym krótkim samouczku podzieliłem się, w jaki sposób możesz automatycznie ustawić status zamówienia WooCommerce jako Zakończone. Zrobiłem to w oparciu o metodę płatności i za wirtualne produkty.

Jednak w zależności od wymagań, jakich potrzebujesz dla swojego sklepu, korzystając z pierwszego fragmentu kodu, możesz dodać więcej warunków, aby oznaczyć status zamówienia jako Zrealizowane. Na przykład, jeśli dokonano płatności, możesz oznaczyć status zamówienia jako zrealizowany nawet w przypadku produktów niewirtualnych, dodając czek na metodę płatności po sprawdzeniu, czy jest to produkt wirtualny.

Jednak za pomocą tego fragmentu kodu status zamówienia zostanie ustawiony jako Zakończone tylko wtedy, gdy wszystkie produkty w zamówieniu są produktami wirtualnymi. Mam nadzieję, że ten post dostarczył rozwiązania do automatycznego zatwierdzania zamówień w WooCommerce.

Podobne artykuły