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

Posted

技术标签:

【中文标题】如何添加 woocommerce 自定义订单状态?【英文标题】:How to add woocommerce custom order status? 【发布时间】:2015-06-29 15:29:36 【问题描述】:

我已使用以下功能向 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' );

每当我去编辑订单并将订单状态更改为新添加的自定义订单状态并单击保存订单按钮时​​。加载后订单状态自动变为Pending Order 不在新添加的自定义订单中...

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

【问题讨论】:

【参考方案1】:

您正在注册的订单状态 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' );

【讨论】:

谢谢!如果可以的话,我会加倍喜欢你的回答。 '这导致只保存帖子状态的前 20 个字符' 谢谢!!!与这个问题斗争的日子! 我知道这是 5 年的历史,但这解决了我的订单状态未保存的问题。

以上是关于如何添加 woocommerce 自定义订单状态?的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce 自定义订单操作不适用于垃圾状态

如何在 WooCommerce 编辑订单中计算自定义订单总额?

如果设置了产品自定义字段,则更新 WooCommerce 订单状态

WooCommerce:将自定义 Metabox 添加到管理订单页面

在Woocommerce电子邮件通知中显示自定义订单状态的付款链接

在 Woocommerce 管理订单编辑页面中以编程方式添加自定义订单备注