WooCommerce不允许我设置自定义订单状态



我使用以下代码向WooCommerce添加了几个新的订单状态:

// Register new status
function register_woocommerce_status() {
register_post_status( 'wc-ready-for-pickup', array(
'label'                     => 'Ready for Pickup',
'public'                    => true,
'exclude_from_search'       => false,
'show_in_admin_all_list'    => true,
'show_in_admin_status_list' => true,
'label_count'               => _n_noop( 'Ready for Pickup (%s)', 'Ready for Pickup (%s)' )
) );
register_post_status( 'wc-ready-for-delivery', array(
'label'                     => 'Ready for Delivery',
'public'                    => true,
'exclude_from_search'       => false,
'show_in_admin_all_list'    => true,
'show_in_admin_status_list' => true,
'label_count'               => _n_noop( 'Ready for Delivery (%s)', 'Ready for Delivery (%s)'     )
) );
}
add_action( 'init', 'register_woocommerce_status' );    
// Add to list of WC Order statuses
function add_awaiting_shipment_to_order_statuses( $order_statuses ) {
$new_order_statuses = array();
// add new order status after processing
foreach ( $order_statuses as $key => $status ) {
$new_order_statuses[ $key ] = $status;
if ( 'wc-processing' === $key ) {
$new_order_statuses['wc-ready-for-pickup'] = 'Ready for Pickup';
$new_order_statuses['wc-ready-for-delivery'] = 'Ready for Delivery';
}
}
return $new_order_statuses;
}
add_filter( 'wc_order_statuses', 'add_awaiting_shipment_to_order_statuses' );

这一切都适用于"准备取货",但是如果我尝试将订单状态设置为"准备交付",它根本无法重置。它添加到订单注释中,说它这样做了,但它实际上并没有设置它。

知道问题是什么吗?

您的问题是 WP 将状态名称限制为 20 个字符,而您在 21 岁时带有"wc-ready-for-delivery">

https://developer.wordpress.org/reference/functions/register_post_status/#user-contributed-notes

我有一个类似的问题,认为这是一个权限问题,但实际上是这个 20 个字符的限制。

好吧,万一其他人遇到这种情况,以下是最终对我有用的方法:

我尝试了其他人建议的各种事情,例如将wc-ready-for-delivery放在第一位而不是wc-ready-for-pickup,完全删除wc-ready-for-Pick等。 无论我做什么,系统都不会将其设置为"准备交付">

然后我尝试将密钥从 wc-ready-for-delivery 更改为 wc-readyfor-delivery,它工作得很好。我不知道问题是什么,但你去吧。

最新更新