php - 将自定义订单状态添加到 WooCommerce 管理订单列表中的过滤器菜单

标签 php wordpress woocommerce hook-woocommerce orders

我目前正在尝试将新的快速过滤器 (subsubsub) 添加到 WooCommerce 管理订单列表:

enter image description here

我有一个名为“wc-test-accepted”的自定义订单状态。如何将自定义订单状态的新快速过滤器添加到顶部?

最佳答案

To get the related filter to your custom order status "wc-test-accepted" in the orders statuses menu filter, you just need to change the status of at least one order and the filter will appear.

以下代码将添加新的自定义订单状态“wc-test-accepted”(已接受):

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

关于php - 将自定义订单状态添加到 WooCommerce 管理订单列表中的过滤器菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53346544/

相关文章:

css - WooCommerce 仪表板 - 突出显示标记为 'Local pickup' 的订单

Woocommerce [woocommerce_cart] 短代码不起作用

WordPress WebToffee 替代品

php - 将数组从 Controller 传递到 codeigniter 中查看

Firefox 中的 php session 变量问题

php - 有没有一种简单的方法可以在 codeigniter 上创建子域?

php - 将自定义结帐字段添加到 WooCommerce 中的订单

javascript - 两个下拉列表,第二个下拉列表填充数据库中的值

wordpress - 谷歌索引 https 而不是 http

php - 如何将背景颜色放在内容容器的底部?