自定义订单状态未显示在客户我的帐户订单历史记录中
Custom order status aren't displayed on the customer my account order history
在 WooCommerce 中,我制作了 2 个自定义订单状态。第一个是 'shipping status',另一个是 'approved status'。
我将一些订单状态更改为这两个新状态后(shipping
或approved
),客户无法在他的订单历史页面上查看此订单。
这是我的代码:
function register_awaiting_shipment_order_status() {
if('product_manager' == $get_roles || 'administrator' == $get_roles){
register_post_status( 'wc-shipping', array(
'label' => 'wc-shipping',
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Shipping <span class="count">(%s)</span>', 'Shipping <span class="count">(%s)</span>' )
) );
}
if('approver' == $get_roles || 'administrator' == $get_roles ||'product_manager' == $get_roles ){
register_post_status( 'wc-approved', array(
'label' => 'wc-approved',
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Approved <span class="count">(%s)</span>', 'Approved <span class="count">(%s)</span>' )
) );
}
}
add_action( 'init', 'register_awaiting_shipment_order_status' );
但是如果我将订单状态更改回 Woocommerce's
默认订单状态(例如 "completed"),那么客户可以再次查看他们的订单历史记录。
我做错了什么?
如何在客户订单历史记录页面上显示具有新自定义状态的新订单?
谢谢。
我已经更正了您代码中的小错误。 您需要将 textdomain
替换为您的主题文本域(或 slug)。
To complete and display this new custom orders status, you need also to register them in wc_order_statuses
filter hook that is used on my_account/orders.php
template that displays customers orders on their account pages.
这是重新访问的代码:
function register_new_custom_order_statuses() {
if('product_manager' == $get_roles || 'administrator' == $get_roles){
register_post_status( 'wc-shipping', array(
'label' => _x( 'Shipping', 'Order status', 'textdomain' ),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Shipping <span class="count">(%s)</span>', 'Shipping <span class="count">(%s)</span>' )
) );
}
if('approver' == $get_roles || 'administrator' == $get_roles ||'product_manager' == $get_roles ){
register_post_status( 'wc-approved', array(
'label' => _x( 'Approved', 'Order status', 'textdomain' ),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Approved <span class="count">(%s)</span>', 'Approved <span class="count">(%s)</span>' )
) );
}
}
add_action( 'init', 'register_new_custom_order_statuses' );
// Register new statuses in wc_order_statuses (function).
function register_new_custom_wc_order_statuses( $order_statuses ) {
$order_statuses['wc-shipping'] = _x( 'Shipping', 'Order status', 'textdomain' );
$order_statuses['wc-approved'] = _x( 'Approved', 'Order status', 'textdomain' );
return $order_statuses;
}
add_filter( 'wc_order_statuses', 'register_new_custom_wc_order_statuses' );
此代码位于您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。
代码已经过测试并且功能齐全。
参考文献:
在 WooCommerce 中,我制作了 2 个自定义订单状态。第一个是 'shipping status',另一个是 'approved status'。
我将一些订单状态更改为这两个新状态后(shipping
或approved
),客户无法在他的订单历史页面上查看此订单。
这是我的代码:
function register_awaiting_shipment_order_status() {
if('product_manager' == $get_roles || 'administrator' == $get_roles){
register_post_status( 'wc-shipping', array(
'label' => 'wc-shipping',
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Shipping <span class="count">(%s)</span>', 'Shipping <span class="count">(%s)</span>' )
) );
}
if('approver' == $get_roles || 'administrator' == $get_roles ||'product_manager' == $get_roles ){
register_post_status( 'wc-approved', array(
'label' => 'wc-approved',
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Approved <span class="count">(%s)</span>', 'Approved <span class="count">(%s)</span>' )
) );
}
}
add_action( 'init', 'register_awaiting_shipment_order_status' );
但是如果我将订单状态更改回 Woocommerce's
默认订单状态(例如 "completed"),那么客户可以再次查看他们的订单历史记录。
我做错了什么?
如何在客户订单历史记录页面上显示具有新自定义状态的新订单?
谢谢。
我已经更正了您代码中的小错误。 您需要将 textdomain
替换为您的主题文本域(或 slug)。
To complete and display this new custom orders status, you need also to register them in
wc_order_statuses
filter hook that is used onmy_account/orders.php
template that displays customers orders on their account pages.
这是重新访问的代码:
function register_new_custom_order_statuses() {
if('product_manager' == $get_roles || 'administrator' == $get_roles){
register_post_status( 'wc-shipping', array(
'label' => _x( 'Shipping', 'Order status', 'textdomain' ),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Shipping <span class="count">(%s)</span>', 'Shipping <span class="count">(%s)</span>' )
) );
}
if('approver' == $get_roles || 'administrator' == $get_roles ||'product_manager' == $get_roles ){
register_post_status( 'wc-approved', array(
'label' => _x( 'Approved', 'Order status', 'textdomain' ),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Approved <span class="count">(%s)</span>', 'Approved <span class="count">(%s)</span>' )
) );
}
}
add_action( 'init', 'register_new_custom_order_statuses' );
// Register new statuses in wc_order_statuses (function).
function register_new_custom_wc_order_statuses( $order_statuses ) {
$order_statuses['wc-shipping'] = _x( 'Shipping', 'Order status', 'textdomain' );
$order_statuses['wc-approved'] = _x( 'Approved', 'Order status', 'textdomain' );
return $order_statuses;
}
add_filter( 'wc_order_statuses', 'register_new_custom_wc_order_statuses' );
此代码位于您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。
代码已经过测试并且功能齐全。
参考文献: