Ваш код сделан из Переименуйте несколько статусов заказов в Woocommerce Код ответа уже охватывает все (90%), в том числе:
Front end> my-account / orders, theСтолбец состояния.
Внешний интерфейс> my-account / view-order / x, итоговая строка
В противном случае, если это не сработает, это может быть вызвано другими настройками вашей темы, плагина или вашими собственными настройками.
Теперь для обработки 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 вашей активной дочерней темы (или активной темы).Проверено и работает.