Переименование статуса заказа WooCommerce

Я хотел бы переименовать статус заказа WooCommerce с «Завершено» на «Заказ получен». Я могу отредактировать скрипт ниже, расположенный в wc-order-functions.php, но я бы предпочел не изменять какие-либо файлы ядра или использовать плагин.

Можно ли переопределить функции woocoomerce скриптами в дочерних темах?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 );
}

Ответы на вопрос(3)

Решение Вопроса

это легко и может быть достигнуто таким образом сwc_order_statuses hook (вы вставите этот фрагмент в вашу активную дочернюю тему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 - переименовать, вСтраница списка заказов:
• выпадающий список действий
• вкладки статуса заказа(с подсчетом)
Увидеть:Переименование нескольких статусов заказов в Woocommerce

Другая связанная ссылка:Как создать пользовательский статус заказа в woocommerce

 LoicTheAztec01 июл. 2018 г., 05:04
Для всех, дляболее полный и общий ответ, связанный с переименованием статуса заказа увидеть:Переименование нескольких статусов заказов в Woocommerce
 Kevin14 июн. 2016 г., 15:13
Сначала я получил сообщение об ошибке, но я внес небольшое изменение, и это помогло. Я должен был изменить окончание "," на ";" on: $ order_statuses ['wc-complete'] = _x ('Заказ получен', 'Статус заказа', 'woocommerce'); Спасибо!
 kybernaut.cz25 июн. 2017 г., 22:51
@LoicTheAztec прекрасно работает, однако я не могу понять, как отобразить переименованное имя в списке доступных статусов, под заголовком «Порядок» есть Все (15) | На удержании (10) и т. Д., Но название не переименовано, есть идеи, как это исправить?
 LoicTheAztec14 июн. 2016 г., 20:35
@Kevin Ах, да, извините за опечатку ... Я обновил свой ответ тогда ... спасибо :)
 Funkodebat21 дек. 2017 г., 03:01
Э-э, нужен ли вашему коду строка о $ new_order_statuses или вообще цикл? Если у вас есть только строка, которая переименовывает wc-complete, будет ли она работать? Возможно, не в порядке. В противном случае строка new_order_statuses выглядит устаревшей, если только вы не создадите и не вернете этот массив.

но по какой-то причине решение Лоика не сработало с моим магазином. Поэтому я хочу поделиться своим простым решением.

С бесплатным плагиномLocoTranslate Вы можете легко переименовать статус заказа для вашего языка. Если ваша страница не нуждается в переводе (то есть на английском языке), она все равно может быть удобной.

Просто создайте совершенно новый файл перевода и введите только новый статус заказа, заменяя оригинальное имя. Этот языковой файл не затрагивает все остальные термины, если поля остаются пустыми (не забудьте активировать этот псевдоперевод в настройках страницы).

Таким образом, есть хороший шанс, чтоWooCommerce обновления не повлияют на это.

но фильтр статуса заказа на главной странице заказа не затрагивается, как упомянуто в одном из комментариев.

Чтобы обновить это, вы также должны подключить фильтр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' );

Вам также необходимо обновить строку в раскрывающемся списке «Массовые действия». Подключившись к фильтру gettext в WordPress, вы сделаете это, например, так:

// 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 функции.

Ваш ответ на вопрос