Добавление пользовательских статусов заказов в виджет статистики панели администратора

Я хотел бы включить сведения о статусе пользовательского заказа в виджет Статистика панели управления WooCommerce. Я установил 2 пользовательских статуса заказа после wc-processing,

Поток заказа после успешной оплаты:
wc-processing => wc-awaiting-shipment => wc-dispatched => wc-completed,

Как awaiting shipment а также dispatched являются статусами пользовательских заказов, виджет статистики WooCommerce не отражает эти заказы в общем объеме продаж. Проблема в том, что у меня много заказов с wc-dispatched а также wc-awaiting-shipment статусы.

Это код, который я использовал для регистрации этих статусов:

/**
* 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

Как мне этого добиться?

Благодарю.

4

Решение

Во-первых, я пересмотрел ваш код, так как вы использовали 2 раза одинаковые хуки. Так что знайте, что у вас есть 2 подключенные функции вместо 4.

Ответить на ваш вопрос: ДА, я только что протестировал работающий админ-хук, который будет включать заказы с вашими пользовательскими статусами в виджете Статистика панели администратора WooCommerce: woocommerce_reports_get_order_report_data_args крюк.

Вот этот код:

// 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');

Этот код находится в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Код протестирован и полностью функционален.


Рекомендации:

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]