Php 自定义订单状态为';t显示在客户我的帐户订单历史记录上
在WooCommerce中,我创建了2个自定义订单状态。第一个是“装运状态”,另一个是“批准状态” 在我将某些订单状态更改为这两种新状态(即Php 自定义订单状态为';t显示在客户我的帐户订单历史记录上,php,wordpress,woocommerce,status,orders,Php,Wordpress,Woocommerce,Status,Orders,在WooCommerce中,我创建了2个自定义订单状态。第一个是“装运状态”,另一个是“批准状态” 在我将某些订单状态更改为这两种新状态(即发货或已批准)后,客户无法在其订单历史页面上查看此订单 这是我的密码: function register_awaiting_shipment_order_status() { if('product_manager' == $get_roles || 'administrator' == $get_roles){ registe
发货
或已批准
)后,客户无法在其订单历史页面上查看此订单
这是我的密码:
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' );
功能寄存器\等待\发货\订单\状态(){
if('product_manager'=$get_roles | |'administrator'=$get_roles){
注册后状态('wc shipping',数组(
“标签”=>“wc配送”,
“public”=>正确,
“从搜索中排除”=>false,
“在\u管理\u所有\u列表中显示\u”=>true,
“在管理状态列表中显示”=>true,
'label_count'=>\u n_noop('Shipping(%s)','Shipping(%s)'
) );
}
if('approver'=$get|u roles | |'administrator'=$get|u roles | | product|u manager'=$get|u roles){
注册后状态('wc approved',数组(
“标签”=>“wc已批准”,
“public”=>正确,
“从搜索中排除”=>false,
“在\u管理\u所有\u列表中显示\u”=>true,
“在管理状态列表中显示”=>true,
“标签计数”=>\u n\u noop('Approved(%s)','Approved(%s)')
) );
}
}
添加操作('init','register''u waiting''u shipping''u order''u status');
但如果我将订单状态更改回Woocommerce的默认订单状态(例如“已完成”),则客户可以在其订单历史记录中再次查看它们
我做错了什么?如何在“客户订单历史记录”页面上显示具有新自定义状态的新订单
谢谢。我已经纠正了您代码中的小错误。您需要用主题文本域(或slug)替换
textdomain
要完成并显示此新的自定义订单状态,您还需要在
过滤器挂钩中注册它们,该挂钩用于my\u account/orders.php
模板,该模板在客户的帐户页面上显示客户订单
这是重新访问的代码:
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 register\u new\u custom\u order\u status(){
if('product_manager'=$get_roles | |'administrator'=$get_roles){
注册后状态('wc shipping',数组(
'label'=>x('Shipping','Order status','textdomain'),
“public”=>正确,
“从搜索中排除”=>false,
“在\u管理\u所有\u列表中显示\u”=>true,
“在管理状态列表中显示”=>true,
'label_count'=>\u n_noop('Shipping(%s)','Shipping(%s)'
) );
}
if('approver'=$get|u roles | |'administrator'=$get|u roles | | product|u manager'=$get|u roles){
注册后状态('wc approved',数组(
'label'=>x('Approved','Order status','textdomain'),
“public”=>正确,
“从搜索中排除”=>false,
“在\u管理\u所有\u列表中显示\u”=>true,
“在管理状态列表中显示”=>true,
“标签计数”=>\u n\u noop('Approved(%s)','Approved(%s)')
) );
}
}
添加操作('init','register'新的\自定义\订单\状态');
//在wc_订单_状态(功能)中注册新状态。
功能寄存器\新\自定义\ wc \订单\状态($order\状态){
$order_status['wc-shipping']=_x('shipping','order status','textdomain');
$order_status['wc-approved']=_x('approved','order status','textdomain');
返回$order\u状态;
}
添加过滤器('wc_订单_状态','register_new_custom_wc_order_状态');
这段代码位于活动子主题(或主题)的function.php文件或任何插件文件中
代码经过测试,功能齐全
参考资料: