Заменяйте названия статусов заказов везде, в т.ч. Предварительный просмотр заказа администратора Woocommerce - PullRequest
0 голосов
/ 21 января 2019

Мне нужно переименовать «В ожидании» в «Ожидание утверждения» и «Обработка» в «Утверждено», в каждом случае.(Кстати, я владелец магазина diy, а не разработчик)

Эта тема принесла мне 60%, Переименование нескольких статусов заказов в Woocommerce Теперь нужно обратиться к этим местам:

  • admin> orders, всплывающее окно предварительного просмотра (символ глаза).
  • front end> ​​my-account / orders, столбец Status.
  • front end> ​​my-account / view-order / x, итоговая строка.

Мой код:

add_filter( 'wc_order_statuses', 'rename_order_statuses', 20, 1 );
function rename_order_statuses( $order_statuses ) {
    $order_statuses['wc-processing'] = _x( 'Approved', 'Order status', 'woocommerce' );
    $order_statuses['wc-on-hold']    = _x( 'Pending Approval', '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 Approved', 'woocommerce' );
    $actions['mark_on-hold']    = __( 'Mark Pending Approval', 'woocommerce' );

    return $actions;
}

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-processing'] ) )
        $views['wc-processing'] = str_replace( 'Processing', __( 'Approved', 'woocommerce'), $views['wc-processing'] );

    if( isset( $views['wc-on-hold'] ) )
        $views['wc-on-hold'] = str_replace( 'On hold', __( 'Pending Approval', 'woocommerce'), $views['wc-on-hold'] );

    return $views;
}

1 Ответ

0 голосов
/ 22 января 2019

Ваш код сделан из Переименуйте несколько статусов заказов в Woocommerce Код ответа уже охватывает все (90%), в том числе:

Front end> ​​my-account / orders, theСтолбец состояния.

enter image description here

Внешний интерфейс> my-account / view-order / x, итоговая строка

enter image description here

В противном случае, если это не сработает, это может быть вызвано другими настройками вашей темы, плагина или вашими собственными настройками.


Теперь для обработки Admin> заказов, всплывающее окно предварительного просмотра (символ глаза) используйте следующий код:

add_filter( 'woocommerce_admin_order_preview_actions', 'filter_admin_order_preview_actions', 10, 2 );
function filter_admin_order_preview_actions( $actions, $order ) {
    $actions        = array();
    $status_actions = array();

    if ( $order->has_status( array( 'pending' ) ) ) {
        $status_actions['on-hold'] = array(
            'url'    => wp_nonce_url( admin_url( 'admin-ajax.php?action=woocommerce_mark_order_status&status=on-hold&order_id=' . $order->get_id() ), 'woocommerce-mark-order-status' ),
            'name'   => __( 'On-hold', 'woocommerce' ),
            'title'  => __( 'Change order status to on-hold', 'woocommerce' ),
            'action' => 'on-hold',
        );
    }
    if ( $order->has_status( array( 'pending', 'on-hold' ) ) ) {
        $status_actions['processing'] = array(
            'url'    => wp_nonce_url( admin_url( 'admin-ajax.php?action=woocommerce_mark_order_status&status=processing&order_id=' . $order->get_id() ), 'woocommerce-mark-order-status' ),
            'name'   => __( 'Approved', 'woocommerce' ),
            'title'  => __( 'Change order status to approved', 'woocommerce' ),
            'action' => 'processing',
        );
    }

    if ( $order->has_status( array( 'pending', 'on-hold', 'processing' ) ) ) {
        $status_actions['complete'] = array(
            'url'    => wp_nonce_url( admin_url( 'admin-ajax.php?action=woocommerce_mark_order_status&status=completed&order_id=' . $order->get_id() ), 'woocommerce-mark-order-status' ),
            'name'   => __( 'Completed', 'woocommerce' ),
            'title'  => __( 'Change order status to completed', 'woocommerce' ),
            'action' => 'complete',
        );
    }

    if ( $status_actions ) {
        $actions['status'] = array(
            'group'   => __( 'Change status: ', 'woocommerce' ),
            'actions' => $status_actions,
        );
    }
    return $actions;
}

И переименоватьСостояние кнопки списка заказов администратора при наведении:

add_filter( 'woocommerce_admin_order_actions', 'rename_admin_order_status_action_button', 10, 2 );
function rename_admin_order_status_action_button( $actions, $order ) {
    // Display the button for all orders that have a 'processing', 'pending' or 'on-hold' status
    if ( isset($actions['processing']) ) {
        $actions['processing']['name'] = __( 'Approved', 'woocommerce');
    }

    return $actions;
}

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

enter image description here

enter image description here

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