2016-06-13 83 views
3

我想将WooCommerce订单状态从“完成”重命名为“接收订单”。我可以编辑位于wc-order-functions.php中的脚本,但我不想修改任何核心文件或使用插件。重命名WooCommerce订单状态

是否可以用子主题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); 
} 

回答

5

只需重命名“已完成”,以“收到订单”,这很容易,可与wc_order_statuses钩来完成这样的订单状态(你会粘贴此片段在活动儿童主题function.php文件):

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'); 

参考:How to create a custom order status in woocommerce

+1

我第一次收到一条错误消息,但是我做了一个小小的改动,而且做到了这一点。我不得不改变结尾“,”到“;” on: $ order_statuses ['wc-completed'] = _x('Order Received','Order status','woocommerce'); 谢谢! – Kevin

+0

@Kevin啊对不起,错别字...我已经更新了我的答案,然后......谢谢:) – LoicTheAztec

+0

@LoicTheAztec很棒,但是,我无法弄清楚如何在“Order”标题下的可用状态列表中显示重命名的名称有全部(15)|保留(10)等,但标题不重命名,任何想法如何解决它? –

0

我也有类似的愿望,但由于某些原因卢瓦克的解决方案并没有与我店工作。所以我想分享我的简单解决方案。

使用免费插件LocoTranslate,您可以轻松地重命名您的语言的订单状态。如果您的网页不需要翻译(即使用英文),它可能仍然非常方便。

只需创建一个全新的翻译文件,并仅输入替换原始名称的新订单状态。所有其他条款不受此语言文件的影响,如果这些字段保持空白(不要忘记在页面设置中激活此伪翻译)。

这样,很有可能WooCommerce更新不会影响它。

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'); 

你也将需要更新的“批量操作”下拉列表中的字符串。挂钩到WordPress的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种功能。

相关问题