在 Woocommerce 中重命名多个订单状态
Rename multiple order statuses in Woocommerce
我正在尝试通过编辑主题的 functions.php 文件来重命名多个 WooCommerce 订单状态。几年前,我发现这里发布了一些代码,用于更改单个订单状态,但由于我对 php 非常缺乏经验,我不知道如何扩展它以更改多个状态。理想情况下,我还想将 'wc-processing' 重命名为 'Paid',将 'wc-on-hold' 重命名为 'Pending'。
这是我找到的用于编辑单个订单状态的代码:
function wc_renaming_order_status( $order_statuses ) {
foreach ( $order_statuses as $key => $status ) {
$new_order_statuses[ $key ] = $status;
if ( 'wc-completed' === $key ) {
$order_statuses['wc-completed'] = _x( 'Order Received', 'Order status', 'woocommerce' );
}
}
return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wc_renaming_order_status' );
有人知道我需要做哪些更改才能更改其他状态吗?
由于存在挂单状态,您还需要重命名现有的“挂单”状态。否则,您将获得 2 个具有相同“待处理”标签的不同状态。
首先重命名那些订单状态:
add_filter( 'wc_order_statuses', 'rename_order_statuses', 20, 1 );
function rename_order_statuses( $order_statuses ) {
$order_statuses['wc-completed'] = _x( 'Order Received', 'Order status', 'woocommerce' );
$order_statuses['wc-processing'] = _x( 'Paid', 'Order status', 'woocommerce' );
$order_statuses['wc-on-hold'] = _x( 'Pending', 'Order status', 'woocommerce' );
$order_statuses['wc-pending'] = _x( 'Waiting', 'Order status', 'woocommerce' );
return $order_statuses;
}
并且在批量编辑订单列表下拉列表中:
add_filter( 'bulk_actions-edit-shop_order', 'custom_dropdown_bulk_actions_shop_order', 20, 1 );
function custom_dropdown_bulk_actions_shop_order( $actions ) {
$actions['mark_processing'] = __( 'Mark paid', 'woocommerce' );
$actions['mark_on-hold'] = __( 'Mark pending', 'woocommerce' );
$actions['mark_completed'] = __( 'Mark order received', 'woocommerce' );
return $actions;
}
而且还需要这个(对于顶部菜单):
foreach( array( 'post', 'shop_order' ) as $hook )
add_filter( "views_edit-$hook", 'shop_order_modified_views' );
function shop_order_modified_views( $views ){
if( isset( $views['wc-completed'] ) )
$views['wc-completed'] = str_replace( 'Completed', __( 'Order Received', 'woocommerce'), $views['wc-completed'] );
if( isset( $views['wc-processing'] ) )
$views['wc-processing'] = str_replace( 'Processing', __( 'Paid', 'woocommerce'), $views['wc-processing'] );
if( isset( $views['wc-on-hold'] ) )
$views['wc-on-hold'] = str_replace( 'On hold', __( 'Pending', 'woocommerce'), $views['wc-on-hold'] );
if( isset( $views['wc-pending'] ) )
$views['wc-pending'] = str_replace( 'Pending', __( 'Stucked', 'woocommerce'), $views['wc-pending'] );
return $views;
}
(感谢brasofilo : Change WP admin post status filter for custom post type)
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
Since Woocommerce 3.3 to handle the preview popup (eye symbol) in admin order list:
我正在尝试通过编辑主题的 functions.php 文件来重命名多个 WooCommerce 订单状态。几年前,我发现这里发布了一些代码,用于更改单个订单状态,但由于我对 php 非常缺乏经验,我不知道如何扩展它以更改多个状态。理想情况下,我还想将 'wc-processing' 重命名为 'Paid',将 'wc-on-hold' 重命名为 'Pending'。
这是我找到的用于编辑单个订单状态的代码:
function wc_renaming_order_status( $order_statuses ) {
foreach ( $order_statuses as $key => $status ) {
$new_order_statuses[ $key ] = $status;
if ( 'wc-completed' === $key ) {
$order_statuses['wc-completed'] = _x( 'Order Received', 'Order status', 'woocommerce' );
}
}
return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wc_renaming_order_status' );
有人知道我需要做哪些更改才能更改其他状态吗?
由于存在挂单状态,您还需要重命名现有的“挂单”状态。否则,您将获得 2 个具有相同“待处理”标签的不同状态。
首先重命名那些订单状态:
add_filter( 'wc_order_statuses', 'rename_order_statuses', 20, 1 );
function rename_order_statuses( $order_statuses ) {
$order_statuses['wc-completed'] = _x( 'Order Received', 'Order status', 'woocommerce' );
$order_statuses['wc-processing'] = _x( 'Paid', 'Order status', 'woocommerce' );
$order_statuses['wc-on-hold'] = _x( 'Pending', 'Order status', 'woocommerce' );
$order_statuses['wc-pending'] = _x( 'Waiting', 'Order status', 'woocommerce' );
return $order_statuses;
}
并且在批量编辑订单列表下拉列表中:
add_filter( 'bulk_actions-edit-shop_order', 'custom_dropdown_bulk_actions_shop_order', 20, 1 );
function custom_dropdown_bulk_actions_shop_order( $actions ) {
$actions['mark_processing'] = __( 'Mark paid', 'woocommerce' );
$actions['mark_on-hold'] = __( 'Mark pending', 'woocommerce' );
$actions['mark_completed'] = __( 'Mark order received', 'woocommerce' );
return $actions;
}
而且还需要这个(对于顶部菜单):
foreach( array( 'post', 'shop_order' ) as $hook )
add_filter( "views_edit-$hook", 'shop_order_modified_views' );
function shop_order_modified_views( $views ){
if( isset( $views['wc-completed'] ) )
$views['wc-completed'] = str_replace( 'Completed', __( 'Order Received', 'woocommerce'), $views['wc-completed'] );
if( isset( $views['wc-processing'] ) )
$views['wc-processing'] = str_replace( 'Processing', __( 'Paid', 'woocommerce'), $views['wc-processing'] );
if( isset( $views['wc-on-hold'] ) )
$views['wc-on-hold'] = str_replace( 'On hold', __( 'Pending', 'woocommerce'), $views['wc-on-hold'] );
if( isset( $views['wc-pending'] ) )
$views['wc-pending'] = str_replace( 'Pending', __( 'Stucked', 'woocommerce'), $views['wc-pending'] );
return $views;
}
(感谢brasofilo : Change WP admin post status filter for custom post type)
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
Since Woocommerce 3.3 to handle the preview popup (eye symbol) in admin order list: