Добавить пользовательский статус заказа в меню фильтра в списке заказов WooCommerce Admin - PullRequest
0 голосов
/ 17 ноября 2018

В настоящее время я пытаюсь добавить новые быстрые фильтры (subsubsub) в список заказов администратора WooCommerce:

enter image description here

У меня есть заказстатус, который называется "wc-test-accept".Как я могу добавить новый быстрый фильтр для моего пользовательского статуса заказа вверху?

1 Ответ

0 голосов
/ 17 ноября 2018

Чтобы получить соответствующий фильтр для вашего пользовательского статуса заказа «wc-test-accept» в фильтре меню статусов заказов, вам просто нужно изменить статус хотя бы одного заказа, и фильтр появится.

Следующий код добавит новый пользовательский статус заказа "wc-test-accept" (Принят):

// Register new custom order status
add_action('init', 'register_custom_order_statuses');
function register_custom_order_statuses() {
    register_post_status('wc-test-accepted ', array(
        'label' => __( 'Accepted', 'woocommerce' ),
        'public' => true,
        'exclude_from_search' => false,
        'show_in_admin_all_list' => true,
        'show_in_admin_status_list' => true,
        'label_count' => _n_noop('Accepted <span class="count">(%s)</span>', 'Accepted <span class="count">(%s)</span>')
    ));
}


// Add new custom order status to list of WC Order statuses
add_filter('wc_order_statuses', 'add_custom_order_statuses');
function add_custom_order_statuses($order_statuses) {
    $new_order_statuses = array();

    // add new order status before processing
    foreach ($order_statuses as $key => $status) {
        $new_order_statuses[$key] = $status;
        if ('wc-processing' === $key) {
            $new_order_statuses['wc-test-accepted'] = __('Accepted', 'woocommerce' );
        }
    }
    return $new_order_statuses;
}


// Adding new custom status to admin order list bulk dropdown
add_filter( 'bulk_actions-edit-shop_order', 'custom_dropdown_bulk_actions_shop_order', 50, 1 );
function custom_dropdown_bulk_actions_shop_order( $actions ) {
    $new_actions = array();

    // add new order status before processing
    foreach ($actions as $key => $action) {
        if ('mark_processing' === $key)
            $new_actions['mark_test-accepted'] = __( 'Change status to Accepted', 'woocommerce' );

        $new_actions[$key] = $action;
    }
    return $new_actions;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.


Как только вы меняете хотя бы один заказ на статус «Принят», он отображается в виде фильтра:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...