2016-09-27 1 views
3

Ich möchte Details aus benutzerdefinierten Auftragsstatus in WooCommerce Admin Dashboard Stats Widget hinzufügen. Ich habe 2 benutzerdefinierten Auftragsstatus gesetzt, der nach wc-processing kommt.Hinzufügen von benutzerdefinierten Auftragsstatus in Admin Dashboard Stats Widget

Order Flow nach erfolgreicher Zahlung ist:
wc-processing =>wc-awaiting-shipment =>wc-dispatched =>wc-completed.

Als awaiting shipment und dispatched individuelle Auftragsstatus sind, Statistik WooCommerce Widget spiegelt nicht die Aufträge in Gesamtverkaufsbetrag. Das Problem ist, dass ich viele Bestellungen mit wc-dispatched und wc-awaiting-shipment Status habe.

Dies ist Code, die ich verwendet habe, diesen kundenspezifische Auftragsstatus registrieren:

/** 
* Register new status 
* Tutorial: http://www.sellwithwp.com/woocommerce-custom-order-status-2/ 
* */ 
function register_awaiting_shipment_order_status() { 
    register_post_status('wc-awaiting-shipment', array(
     'label' => 'Awaiting Shipment', 
     'public' => true, 
     'exclude_from_search' => false, 
     'show_in_admin_all_list' => true, 
     'show_in_admin_status_list' => true, 
     'label_count' => _n_noop('Awaiting shipment <span class="count">(%s)</span>', 'Awaiting shipment <span class="count">(%s)</span>') 
    )); 
} 

add_action('init', 'register_awaiting_shipment_order_status'); 

// Add to list of WC Order statuses 
function add_awaiting_shipment_to_order_statuses($order_statuses) { 

    $new_order_statuses = array(); 

    // add new order status after processing 
    foreach ($order_statuses as $key => $status) { 
     $new_order_statuses[$key] = $status; 
     if ('wc-processing' === $key) { 
      $new_order_statuses['wc-awaiting-shipment'] = 'Awaiting shipment'; 
     } 
    } 
    return $new_order_statuses; 
} 

add_filter('wc_order_statuses', 'add_awaiting_shipment_to_order_statuses'); 

/** 
* Register new status 
* Tutorial: http://www.sellwithwp.com/woocommerce-custom-order-status-2/ 
* */ 
function register_dispatched_order_status() { 
    register_post_status('wc-dispatched', array(
     'label' => 'Dispatched', 
     'public' => true, 
     'exclude_from_search' => false, 
     'show_in_admin_all_list' => true, 
     'show_in_admin_status_list' => true, 
     'label_count' => _n_noop('Dispatched <span class="count">(%s)</span>', 'Dispatched <span class="count">(%s)</span>') 
    )); 
} 

add_action('init', 'register_dispatched_order_status'); 

// Add to list of WC Order statuses 
function add_dispatched_to_order_status($order_status) { 

    $new_order_statuses = array(); 

    // add new order status after processing 
    foreach ($order_status as $key => $status) { 

     $new_order_statuses[$key] = $status; 

     if ('wc-awaiting-shipment' === $key) { 
      $new_order_statuses['wc-dispatched'] = 'Dispatched'; 
     } 
    } 

    return $new_order_statuses; 
} 

add_filter('wc_order_statuses', 'add_dispatched_to_order_status'); 

Woocommerce Status Dashboard Widgets

Wie kann ich das erreichen?

Danke.

+0

@LoicTheAztec: Ich reise jetzt, so kann es jetzt nicht testen, in der Lage werden nach 8 h zu aktualisieren. und tut mir leid, dass ich nicht informiert habe. –

Antwort

5

Zuerst habe ich Ihren Code erneut gelesen, da Sie 2 mal die gleichen Haken verwenden. So wissen Sie haben zwei Haken Funktionen statt 4.

auf Ihre Frage zu beantworten: Ja, es ist ein Arbeits Admin Haken, die ich gerade getestet haben, die Aufträge mit Ihren eigenen Status im WooCommerce Admin-Dashboard enthalten wird Statistik-Widget: woocommerce_reports_get_order_report_data_args hook.

Hier ist dieser Code:

// Register new status 
function register_custom_order_statuses() { 
    register_post_status('wc-awaiting-shipment', array(
     'label' => 'Awaiting Shipment', 
     'public' => true, 
     'exclude_from_search' => false, 
     'show_in_admin_all_list' => true, 
     'show_in_admin_status_list' => true, 
     'label_count' => _n_noop('Awaiting shipment <span class="count">(%s)</span>', 'Awaiting shipment <span class="count">(%s)</span>') 
    )); 

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


// Add to list of WC Order statuses 
function add_custom_order_statuses($order_statuses) { 
    $new_order_statuses = array(); 

    // add new order status after processing 
    foreach ($order_statuses as $key => $status) { 
     $new_order_statuses[$key] = $status; 
     if ('wc-processing' === $key) { 
      $new_order_statuses['wc-awaiting-shipment'] = 'Awaiting shipment'; 
      $new_order_statuses['wc-dispatched'] = 'Dispatched'; 
     } 
    } 
    return $new_order_statuses; 
} 
add_filter('wc_order_statuses', 'add_custom_order_statuses'); 


// Admin reports for custom order status 
function wc_reports_get_order_custom_report_data_args($args) { 
    $args['order_status'] = array('completed', 'processing', 'on-hold', 'awaiting-shipment', 'dispatched'); 
    return $args; 
}; 
add_filter('woocommerce_reports_get_order_report_data_args', 'wc_reports_get_order_custom_report_data_args'); 

Dieser Code geht in function.php Datei Ihres aktiven Kind Thema (oder Thema) oder auch in jeder Plugin-Datei.

Der Code ist getestet und voll funktionsfähig.


Referenzen:

+0

danke es funktioniert. :) –

+0

Hallo @LoicTheAztec Ich sah gerade 'woocommerce_reports_get_order_report_data_args' Filter Berechnung Bestellsumme perfekt, aber ** zeigt 0 Items ** in WooCommerce wc-Berichte Seite. Ich kommentiere die letzte Zeile aus (d. H. "Add_filter"). Die Anzahl der Elemente wird korrekt angezeigt. Wie behebe ich das? Bitte überprüfen Sie dies [screenshot] (http://screencast.com/t/I2pzk5jw9). –

+0

@RaunakGupta Ich habe versucht, einen Trick zu finden, damit es funktioniert ... aber ich habe es im Moment nicht verstanden. – LoicTheAztec

Verwandte Themen