問題描述
我正在嘗試通過編輯我的主題的 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('訂單已收到', '訂單狀態', 'woocommerce');}}返回 $order_statuses;}add_filter('wc_order_statuses', 'wc_renaming_order_status');
有人知道我需要進行哪些更改才能更改其他狀態嗎?
由于存在 Pending 訂單狀態,您還需要將現有的Pending"重新命名為Pending"地位.如果不是,您將獲得 2 個具有相同待定"的不同狀態.標簽.
首先重命名這些訂單狀態:
add_filter( 'wc_order_statuses', 'rename_order_statuses', 20, 1 );函數 rename_order_statuses( $order_statuses ) {$order_statuses['wc-completed'] = _x('訂單已收到', '訂單狀態', 'woocommerce');$order_statuses['wc-processing'] = _x('付費','訂單狀態','woocommerce');$order_statuses['wc-on-hold'] = _x('Pending', 'Order status', 'woocommerce');$order_statuses['wc-pending'] = _x('等待','訂單狀態','woocommerce');返回 $order_statuses;}
也在批量編輯訂單列表下拉菜單中:
add_filter( 'bulk_actions-edit-shop_order', 'custom_dropdown_bulk_actions_shop_order', 20, 1 );函數 custom_dropdown_bulk_actions_shop_order( $actions ) {$actions['mark_processing'] = __( 'Markpaid', 'woocommerce');$actions['mark_on-hold'] = __( 'Mark pending', 'woocommerce' );$actions['mark_completed'] = __( 'Mark order received', 'woocommerce' );返回 $actions;}
這也是需要的(對于頂部菜單):
foreach( array( 'post', 'shop_order' ) as $hook )add_filter( "views_edit-$hook", 'shop_order_modified_views');功能 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'] );返回 $views;}
(感謝
代碼位于活動子主題(或活動主題)的 function.php 文件中.經測試有效.
<塊引用>從 Woocommerce 3.3 開始處理管理訂單列表中的預覽彈出窗口(眼睛符號):
隨處替換訂單狀態名稱包括Woocommerce 管理員訂單預覽
I'm trying to rename multiple WooCommerce order status by editing my theme's functions.php file. I found some code posted here a couple years ago that works to change a single order status, but since I'm very inexperienced with php, I don't know how to expand on it to change multiple statuses. Ideally I'd also like to rename 'wc-processing' to 'Paid' and 'wc-on-hold' to 'Pending'.
Here's the code I found to edit a single order status:
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' );
Anyone know what changes I need to make to change additional statuses?
As Pending order status exist, you need also to rename the existing "Pending" status. If not you will get 2 different statuses with the same "Pending" label.
First to rename those order statuses:
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;
}
And Also in the bulk edit order list dropdown:
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;
}
And also this is needed (for the top menu):
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;
}
(Thanks to brasofilo : Change WP admin post status filter for custom post type)
Code goes in function.php file of your active child theme (or active theme). Tested and works.
Since Woocommerce 3.3 to handle the preview popup (eye symbol) in admin order list:
Replace order status names everywhere incl. Woocommerce admin order preview
這篇關于在 Woocommerce 中重命名多個訂單狀態的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!