如何添加woocommerce自定义订单状态?

时间:2015-04-22 06:42:28

标签: wordpress function woocommerce

我已使用以下功能为woocommerce添加了新的自定义订单状态。



// Register New Order Statuses
function wpex_wc_register_post_statuses() {
	register_post_status( 'wc-custom-order-status', array(
		'label'						=> _x( 'Shipping In Progress', 'WooCommerce Order status', 'text_domain' ),
		'public'					=> true,
		'exclude_from_search'		=> false,
		'show_in_admin_all_list'	=> true,
		'show_in_admin_status_list'	=> true,
		'label_count'				=> _n_noop( 'Approved (%s)', 'Approved (%s)', 'text_domain' )
	) );
}
add_filter( 'init', 'wpex_wc_register_post_statuses' );

// Add New Order Statuses to WooCommerce
function wpex_wc_add_order_statuses( $order_statuses ) {
	$order_statuses['wc-custom-order-status'] = _x( 'Shipping In Progress', 'WooCommerce Order status', 'text_domain' );
	return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wpex_wc_add_order_statuses' );




每当我去编辑订单并将订单状态更改为新添加的自定义订单状态并单击“保存订单”按钮时。加载订单状态后,自动更改为挂单不在新添加的自定义订单...

enter image description here

enter image description here

如何克服这个问题......?

1 个答案:

答案 0 :(得分:13)

您注册的订单状态wc-custom-order-status太长 - 22个字符。这样只会保存帖子状态的前20个字符,这会使其无效并导致您的问题。

订单状态被注册为发布状态,发布状态的限制为20个字符。

我建议您将wc-custom-order-status状态名称更新为wc-shipping-progress,其长度恰好为20个字符。

我还发布了您的代码的更新版本,仅供参考(我只更改了状态名称):

// Register New Order Statuses
function wpex_wc_register_post_statuses() {
    register_post_status( 'wc-shipping-progress', array(
        'label'                     => _x( 'Shipping In Progress', 'WooCommerce Order status', 'text_domain' ),
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Approved (%s)', 'Approved (%s)', 'text_domain' )
    ) );
}
add_filter( 'init', 'wpex_wc_register_post_statuses' );

// Add New Order Statuses to WooCommerce
function wpex_wc_add_order_statuses( $order_statuses ) {
    $order_statuses['wc-shipping-progress'] = _x( 'Shipping In Progress', 'WooCommerce Order status', 'text_domain' );
    return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wpex_wc_add_order_statuses' );