【问题标题】:Add custom order status to filter menu in WooCommerce Admin Orders list将自定义订单状态添加到 WooCommerce 管理员订单列表中的筛选菜单
【发布时间】:2018-11-16 23:08:15
【问题描述】:

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

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

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce orders


    【解决方案1】:

    要在订单状态菜单过滤器中获取自定义订单状态“wc-test-accepted”的相关过滤器,您只需更改至少一个订单的状态,过滤器就会出现。

    以下代码将新增一个自定义订单状态“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 文件中。经过测试并且可以工作。


    一旦您将至少一个订单更改为“已接受”订单状态,它就会显示为过滤器:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 2021-09-04
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-26
      相关资源
      最近更新 更多