如何删除 WooCommerce 订单状态?

How to remove WooCommerce order status?

我想修改 woocommerce 中包含的一个功能。这是我编辑的函数 (woocommerce/includes/wc-order-functions.php):

function wc_get_order_statuses() {
    $order_statuses = array(
        'wc-pending'    => _x( 'Pending Payment', 'Order status', 'woocommerce' ),
        /*'wc-processing' => _x( 'Processing', 'Order status', 'woocommerce' ),*/
        'wc-on-hold'    => _x( 'On Hold', 'Order status', 'woocommerce' ),
        'wc-completed'  => _x( 'Completed', 'Order status', 'woocommerce' ),
        'wc-cancelled'  => _x( 'Cancelled', 'Order status', 'woocommerce' ),
        'wc-refunded'   => _x( 'Refunded', 'Order status', 'woocommerce' ),
        'wc-failed'     => _x( 'Failed', 'Order status', 'woocommerce' ),
    );
    return apply_filters( 'wc_order_statuses', $order_statuses );
}

我试图在子主题的 function.php 文件中加载一个新功能,但似乎不起作用。

我想要实现的是从状态菜单中删除订单项 "Processing"。我也试过 css 但那些不支持

select option[value="wc-processing"] {display: none !important;}

您需要使用过滤器。曾几何时,我写了一个我认为很好的教程解释 WordPress filters

在这种情况下,最终结果将是:

function so_39252649_remove_processing_status( $statuses ){
    if( isset( $statuses['wc-processing'] ) ){
        unset( $statuses['wc-processing'] );
    }
    return $statuses;
}
add_filter( 'wc_order_statuses', 'so_39252649_remove_processing_status' );

请记住,处理状态是创建订单时的默认状态,因此您可能需要进行其他更改以补偿它的删除。