Переименование нескольких статусов заказов в Woocommerce - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь переименовать несколько статусов заказов WooCommerce, отредактировав файл functions.php моей темы.Я нашел здесь несколько лет назад код, который работает для изменения статуса одного заказа, но так как я очень неопытен в 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( 'Order Received', 'Order status', 'woocommerce' );
        }
    }
    return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wc_renaming_order_status' );

Кто-нибудь знает, какие изменения мне нужно внести, чтобы изменить дополнительные статусы?

1 Ответ

0 голосов
/ 27 мая 2018

Поскольку статус отложенного ордера существует, вам также необходимо переименовать существующий статус отложенного ордера.Если нет, вы получите 2 разных статуса с одинаковой меткой «Ожидание».

Сначала переименуйте эти статусы заказа:

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;
}

И также в выпадающем списке списка массового редактирования:

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;
}

enter image description here

А также это необходимо (для верхнего меню):

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;
}

(Спасибо brasofilo : Изменить фильтр статуса поста администратора WP для пользовательского типа поста )

enter image description here

Код идетв файле function.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

Начиная с Woocommerce 3.3 для обработки всплывающего окна предварительного просмотра (символ глаза) в списке заказов администратора:

Замена названий статусов заказов везде, вкл.Предварительный просмотр заказа администратора Woocommerce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...