wPHP - wordpress, woocommerce - kodowanie bez wtyczek
WordPress - zakoduj to sam w PHP

Jak zrobić własny status zamówienia w Woocommerce

Grzegorz Chodacki8 lutego 2018woocommerce

Chociaż WooCommerce zawiera kilka różnych stanów zamówień, mogą one nie pasować do przepływu informacji w Twoim sklepie. Dzięki wbudowanym funkcjom WooCommerce możesz oznaczać zamówienia jednym z następujących statusów:

  • Zakończony
  • Przetwarzanie
  • Oczekuje na płatność
  • W oczekiwaniu
  • Zwrócono środki
  • Anulowany
  • Nie powiodło się

Jednak niektóre sklepy potrzebują więcej stanów zamówień, takich jak “Oczekiwanie na dostawę”, “Faktura do pobrania” lub inne, aby spełnić ich wymagania dotyczące zakończenia sprzedaży. Możesz łatwo dodać je samemu z niewielką ilością niestandardowego kodu.

Zobaczmy, jak dodać status zamówienia niestandardowego WooCommerce i usunąć status zamówienia.

Dodawanie statusu zamówienia niestandardowego WooCommerce

W WooCommerce 2.1 lub wcześniejszym statusy zamówień były przechowywane jako systematyka dla typu wpisu “Zamówienie”. Taksonomie WordPress są kategoryzacjami, takimi jak kategorie postów i tagi. Jednak WooCommerce 2.2 wymagało zmiany struktury zamówień w celu obsługi częściowych i automatycznych zwrotów od administratora WooCommerce. Statusy zamówień są teraz zapisywane jako niestandardowy status posta , podobnie jak wersja robocza , zaplanowana lub opublikowana dla postów.

Dodanie niestandardowego statusu postu wymaga teraz nieco więcej kodu niż w przypadku WooCommerce 2.1, ale jest to z perspektywy programistycznej nieco prostsze (nie trzeba uruchamiać kodu, a następnie go usunąć). Pamiętaj, aby poprawnie dodać ten kod do swojej witryny – Zalecam utworzenie wtyczki lub skorzystanie z wtyczki Code Snippets.

Zacznijmy od pełnego fragmentu dla niecierpliwych ludzi. Spowoduje to dodanie statusu zamówienia “Oczekuje na dostawę” do Twojego sklepu. Rozwiążę to, aby wyjaśnić, co robi każda część tego fragmentu.

/**
 * Zarejestruj nowy status zamówienia
 * Tutorial: https://www.wphp.pl
**/
function dostawa_status() {
 register_post_status( 'wc-dostawa', array(
 'label' => 'Oczekuje na dostawę',
 'public' => true,
 'exclude_from_search' => false,
 'show_in_admin_all_list' => true,
 'show_in_admin_status_list' => true,
 'label_count' => _n_noop( 'Oczekuje na dostawę <span class="count">(%s)</span>', 'Oczekuje na dostawę <span class="count">(%s)</span>' )
 ) );
}
add_action( 'init', 'dostawa_status' );

// Dodanie do listy statusów zamówień (wc_order_statuses)
function dodaj_dostawa_status( $order_statuses ) {
 $new_order_statuses = array();
 foreach ( $order_statuses as $key => $status ) {
 $new_order_statuses[ $key ] = $status;
 if ( 'wc-processing' === $key ) {
 $new_order_statuses['wc-dostawa'] = 'Oczekuje na dostawę';
 }
 }
 return $new_order_statuses;
}
add_filter( 'wc_order_statuses', 'dodaj_dostawa_status' );

Na koniec mały dodatek dla estetów, którzy chcieliby do nowego statusu zamówienia dołączyć własną ikonkę.

add_action('admin_head', 'backorder_font_icon');

function backorder_font_icon() {
 echo '<style>
 .widefat .column-order_status mark.dostawa:after{
 font-family:WooCommerce;
 speak:none;
 font-weight:400;
 font-variant:normal;
 text-transform:none;
 line-height:1;
 -webkit-font-smoothing:antialiased;
 margin:0;
 text-indent:0;
 position:absolute;
 top:0;
 left:0;
 width:100%;
 height:100%;
 text-align:center;
 content:"\e019";
 color:#000000;
 }
 </style>';
}


sellwithwp.com/woocommerce-custom-order-status-2/

function register_shipment_arrival_order_status() {
 register_post_status( 'wc-dostawa', array(
 'label' => 'Czeka na dostawę towaru',
 'public' => true,
 'show_in_admin_status_list' => true,
 'show_in_admin_all_list' => true,
 'exclude_from_search' => false,
 'label_count' => _n_noop( 'Czeka na dostawę <span class="count">(%s)</span>', 'Czeka na dostawę <span class="count">(%s)</span>' )
 ) );
}
add_action( 'init', 'register_shipment_arrival_order_status' );
function add_awaiting_shipment_to_order_statuses( $order_statuses ) {
 $new_order_statuses = array();
 foreach ( $order_statuses as $key => $status ) {
 $new_order_statuses[ $key ] = $status;
 if ( 'wc-processing' === $key ) {
 $new_order_statuses['wc-dostawa'] = 'Czeka na dostawę towaru';
 }
 }
 return $new_order_statuses;
}
add_filter( 'wc_order_statuses', 'add_awaiting_shipment_to_order_statuses' );

Jeśli jeszcze chcemy zmienić kolejność w submenu nad listą zamówień to taki kod:

function woocommerce_custom_order_views( $views ) {

 $widok = array_slice($views, 0, 2);
 $dostawa = array_slice($views,-1,1);
 $reszta = array_slice($views, 2);
 unset( $views['wc-dostawa'] );
 $views = $widok + $dostawa + $reszta;
 
 // all, wc-processing, wc-on-hold, wc-completed, wc-cancelled, wc-refunded, wc-failed, wc-dostawa

 return $views;
}

add_filter( 'views_edit-shop_order', 'woocommerce_custom_order_views' );
Ukrywanie płatności ze względu na wysyłkę Zoptymalizowane menu wordpressa – przerabiamy klasę Walker_Nav_Menu

Related Posts

layout, woocommerce

Wyszukiwanie postów tylko po tytułach

Temat wydawał się dość prosty, a jednak zajął mi trochę czasu. Wujek Google wcale nie jest tak łaskawy w odpowiedzi na pytanie co zrobić aby wyniki wyszukiwania w wordpress obejmowały jedynie szukanie po tytułach postów (produktów) a nie po całej treści (opisie).

optymalizacja, woocommerce

Jak przyspieszyć stronę wyłączając odświeżanie koszyka woocoomerce

Bardzo często zdarza się, że nasza strona z woocommerce działa wolno. Narzędzia do testowania prędkości typu GTMetrix, często pokazują, że wpływ na prędkość ładowania strony może mieć skrypt wc-ajax=get_refreshed_fragments. Generuje on opóźnienia i obciążenie serwera. Do czego jest on potrzebny, czy jest potrzebny i jak go wyłączyć?

layout, woocommerce

Dodanie niestandardowych pól do produktu WooCoomerce

Zagadnienie dotyczy innego podejścia niż przy poprzednim wpisie. Poprzednio dla produktów prostych i produktów z wariantami wyliczana była cena za 1m2 na podstawie wymiarów produktu po czym wyświetlana na karcie produktu. Tym razem dodamy dodatkowe pola od strony zaplecza, tj. cenę (pole input) oraz jednostkę (pole wyboru select). Trudność polega na tym, że w zależności […]

Ostatnie wpisy

  • Jak wyłączyć odzyskiwanie hasła
  • Pobieranie aktualnego kursu walut przez API NBP
  • Poczta interia – nie dochodzą maile
  • Wyszukiwanie postów tylko po tytułach
  • Related product – produkty podobne w woocommerce

Najnowsze komentarze

    Archiwa

    • wrzesień 2022
    • lipiec 2022
    • kwiecień 2022
    • marzec 2022
    • październik 2021
    • wrzesień 2021
    • kwiecień 2021
    • marzec 2021
    • grudzień 2020
    • lipiec 2020
    • marzec 2020
    • luty 2020
    • styczeń 2020
    • maj 2019
    • luty 2019
    • listopad 2018
    • sierpień 2018
    • czerwiec 2018
    • maj 2018
    • marzec 2018
    • luty 2018
    • styczeń 2018

    Kategorie

    • dla admina
    • layout
    • optymalizacja
    • woocommerce

    Meta

    • Zaloguj się
    • Kanał wpisów
    • Kanał komentarzy
    • WordPress.org
    Strony na Wordpress - uKONTENTowani.pl
    TO NIE JEST STRONA DLA INSTALATORÓW WTYCZEK