2016-06-13 25 views
3

WooCommerceの注文ステータスを「完了」から「受注」に変更します。 wc-order-functions.phpにある以下のスクリプトを編集することはできますが、コアファイルを変更したり、プラグインを使用したりしたくないです。WooCommerceの注文ステータスの名前を変更する

子テーマのfunctions.phpファイル内のスクリプトを使用して、ウオコヒーレンス関数を上書きすることはできますか?

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

私は最初にエラーメッセージを受け取りましたが、私は小さな変更を加えました。私は終わりを変えなければなりませんでした "、"に ";" : 'wc-completed'] = _x( '受注'、 '注文状況'、 'woocommerce'); ありがとう! – Kevin

+0

@Kevinああ、申し訳ありませんが誤字...私は答えを更新しています...ありがとう:) – LoicTheAztec

+0

@LoicTheAztecは素晴らしいですが、「注文」のタイトルの下で利用可能なステータスのリストに名前を変更した名前を表示する方法はわかりませんすべてがある(15)|ホールド(10)などではなく、タイトルの名前が変更されていない、どのようにそれを修正するためのアイデア? –

0

が、私は同様の願いを持っていたが、何らかの理由でロイックのソリューションは、私の店では動作しませんでした。だから私は私の単純な解決策を共有したい。

無料のプラグインLocoTranslateを使用すると、言語の注文状況の名前を簡単に変更できます。あなたのページが翻訳を必要としない場合(すなわち、英語である場合)、それは依然として便利かもしれません。

完全に新しい翻訳ファイルを作成し、元の名前を置き換える新しい注文ステータスのみを入力してください。フィールドが空のままであれば、他のすべての用語はこの言語ファイルの影響を受けません(ページ設定でこの疑似翻訳を有効にすることを忘れないでください)。

このようにして、WooCommerce更新が影響を与えない可能性があります。

1

ほとんどの場所で受け入れられた回答はうまくいきますが、コメントの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'); 

はまた、「一括アクション]ドロップダウンリスト内の文字列を更新する必要があります。あなたはすべての3つの機能を持っているので、

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

したがって、上記の受け入れ答えにこれらを追加しますので、同じように、WordPressのgettextのフィルタましょうあなたがそれを行うにフッキング。

関連する問題