我想将WooCommerce订单状态从“已完成”重命名为“已收到订单”。我可以编辑下面wc-order-functions.php中的脚本,但我不想修改任何核心文件或使用插件。
是否可以使用子主题functions.php
文件中的脚本覆盖woocoomerce函数?
function wc_get_order_statuses() {
$order_statuses = array(
'wc-pending' => _x( 'Pending Payment', 'Order status', 'woocommerce' ),
'wc-processing' => _x( 'Processing', 'Order status', 'woocommerce' ),
'wc-on-hold' => _x( 'On Hold', 'Order status', 'woocommerce' ),
'wc-completed' => _x( 'Completed', 'Order status', 'woocommerce' ),
'wc-cancelled' => _x( 'Cancelled', 'Order status', 'woocommerce' ),
'wc-refunded' => _x( 'Refunded', 'Order status', 'woocommerce' ),
'wc-failed' => _x( 'Failed', 'Order status', 'woocommerce' ),
);
return apply_filters( 'wc_order_statuses', $order_statuses );
}
答案 0 :(得分:12)
只需将订单状态“已完成”重命名为“已收到订单”,这很简单,可以通过wc_order_statuses
挂钩以这种方式完成(您可以将此代码段粘贴到您的活动子主题function.php
文件中):
add_filter( 'wc_order_statuses', 'wc_renaming_order_status' );
function wc_renaming_order_status( $order_statuses ) {
foreach ( $order_statuses as $key => $status ) {
if ( 'wc-completed' === $key )
$order_statuses['wc-completed'] = _x( 'Order Received', 'Order status', 'woocommerce' );
}
return $order_statuses;
}
代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作。
更新2018年 - 要重命名,请订单列表页:
•批量操作下拉列表
•订单状态选项卡(带计数)
请参阅:Rename multiple order statuses in Woocommerce
答案 1 :(得分:1)
我有一个类似的愿望,但由于某种原因,Loic的解决方案不适用于我的商店。所以我想分享我的简单解决方案。
使用免费插件LocoTranslate
,您可以轻松重命名语言的订单状态。如果您的页面不需要翻译(即使用英语),它可能仍然很方便。
只需创建一个全新的翻译文件,只输入替换原始名称的新订单状态。如果字段保持为空(不要忘记在页面设置中激活此伪翻译),则所有其他术语不受此语言文件的影响。
这样,WooCommerce
更新很可能不会影响它。
答案 2 :(得分:1)
接受的答案在大多数地方都做得很好,但主要订单页面上的订单状态过滤器不受影响,如其中一条评论中所述。
要更新此功能,您还必须加入过滤器 woocommerce_register_shop_order_post_statuses 并更新 label_count ,如下所示:
// Rename order status 'Completed' to 'Order Received' in admin main view - different hook, different value than the other places
function wc_rename_order_status_type( $order_statuses ) {
foreach ( $order_statuses as $key => $status ) {
$new_order_statuses[ $key ] = $status;
if ( 'wc-completed' === $key ) {
$order_statuses['wc-completed']['label_count'] = _n_noop( 'Order Received <span class="count">(%s)</span>', 'Order Received <span class="count">(%s)</span>', 'woocommerce' );
}
}
return $order_statuses;
}
add_filter( 'woocommerce_register_shop_order_post_statuses', 'wc_rename_order_status_type' );
您还需要在&#39;批量操作&#39;中更新字符串。落下。挂进WordPress&#39; gettext过滤器让你这样做,如下:
// Rename order status in the bulk actions dropdown on main order list
function rename_bulk_status( $translated_text, $untranslated_text, $domain ) {
if( is_admin()) {
if( $untranslated_text == 'Change Status To completed' )
$translated_text = __( 'Change Status To Order Received','woocommerce' );
}
return $translated_text;
}
add_filter('gettext', 'rename_bulk_status', 20, 3);
所以将这些添加到上面接受的答案中,这样你就拥有了所有3个功能。