Új rendelési állapot definiálása WooCommerce-ben előnézeti képe

Új rendelési állapot definiálása WooCommerce-ben

| Olvasási idő: 1 perc

A WooCommerce néhány alapértelmezett rendelési állapottal érkezik - ezek lefedik az igények nagyjából 90%-át, de ne felejtsük el, hogy sosincs két teljesen azonos webshop, így szükségünk lehet saját rendelési állapotok definiálására. 

Mikor lehet hasznos egyedi rendelési állapotokat bevezetnünk? Például akkor, ha a shopban értékesített termék egyedi, azt a megrendelő kérésére gyártjuk: ekkor az egyedi állapotokkal visszajelzést tudunk adni a vásárlónak arról, hogy rendelése éppen "hogy áll". Erre van egy fizetős plugin, ami mindent IS tud - viszont ha nekünk csak az egyedi állapotok kellenek, akkor felesleges kiadásnak tűnik az az 50 dollár oldalanként. 

Kezdjük tehát a szokásossal, vagyis hozzunk létre egy fájlt (mondjuk add_custom_woocommerce_order_statuses.php néven) az mu-plugins mappában, az alábbi tartalommal: 

php
<?php
/*
Plugin Name: WooCommerce custom order statuses
Plugin URI: https://www.webmenedzser.hu
Description: Add one or more custom order statuses to WooCommerce
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPLv3
*/

/**
 * Új állapot regisztrálása
 **/
function register_custom_order_statuses() {
    register_post_status( 'wc-manufacturing', array(
        'label'                     => 'Gyártás alatt',
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Gyártás alatt <span class="count">(%s)</span>', 'Gyártás alatt <span class="count">(%s)</span>' )
    ) );

    register_post_status( 'wc-packing', array(
        'label'                     => 'Csomagolás alatt',
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Csomagolás alatt <span class="count">(%s)</span>', 'Csomagolás alatt <span class="count">(%s)</span>' )
    ) );
}
add_action( 'init', 'register_custom_order_statuses' );

/*
 * Állapotok listához adása
 */
function add_custom_order_statuses( $order_statuses ) {
    $order_statuses['wc-manufacturing'] = 'Gyártás alatt';
    $order_statuses['wc-packing'] = 'Csomagolás alatt';

    return $order_statuses;
}
add_filter( 'wc_order_statuses', 'add_custom_order_statuses' );

A fenti kóddal hozzáadunk kettő rendelési állapotot: "Gyártás alatt" és "Csomagolás alatt". A két register_post_status megszabja, hogy milyen tulajdonságokkal rendelkezik az adott állapot, az add_custom_order_statuses pedig hozzáadja ezeket a státuszválasztó legördülőhöz. 

FONTOS!register_post_status első argumentuma (vagyis az állapot neve, mint a wc-manufacturing, vagy wc-packing) ne legyen hosszabb, mint 20 karakter

Ha minden igaz, akkor ezzel megvolnánk: léteznek a rendelés állapotaink, azok rendben megjelennek a legördülőben - és ha van ilyen állapotú rendelésünk - akkor még a fenti "szűrőben" is megjelennek - yay, spóroltunk 49 dollárt!