Удалить действие заказа администратора WooCommerce из предварительного просмотра заказа - PullRequest
1 голос
/ 07 апреля 2019

Я хочу удалить для менеджеров магазинов возможность пометить заказ как выполненный. Для этого я использовал следующее на основе " Скрыть условно определенную кнопку действия в списке заказов администратора Woocommerce " в файле functions.php моей темы:

add_filter( 'woocommerce_admin_order_actions', 'custom_admin_order_actions', 900, 2 );
function custom_admin_order_actions( $actions, $the_order ){
    if(isset(wp_get_current_user()->roles[0]) && wp_get_current_user()->roles[0] == 'shop-manager') 
        unset($actions['complete']);

    return $actions;
}

Таким образом, я успешно удалил полную кнопку со страницы shop_order. Однако менеджер магазина все еще может выполнить заказ, используя кнопку «Завершить», которая отображается в окне предварительного просмотра заказа. Чтобы избежать этого, я попробовал следующее действие после предыдущего:

add_action( 'woocommerce_admin_order_preview_start', 'custom_display_order_data_in_admin' );
function custom_display_order_data_in_admin(){
    // Call the stored value and display it
    echo '<div>Class = "button hidden wc-action-button wc-action-button-complete complete"</div><br>'; 
}

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

Есть ли способ удалить эту способность сразу со страницы shop_order и предварительного просмотра заказа? Если нет, как я могу скрыть эту кнопку из окна предварительного просмотра?

1 Ответ

1 голос
/ 08 апреля 2019

Чтобы удалить кнопку «завершить» статус обновления заказа из предварительного просмотра заказа администратора для роли пользователя «Менеджер магазина», используйте следующее:

add_filter( 'woocommerce_admin_order_preview_actions', 'filter_admin_order_preview_actions', 10, 2 );
function filter_admin_order_preview_actions( $actions, $order ) {
    if( current_user_can('shop-manager') && isset($actions['status']['actions']['complete']) ) {
        unset($actions['status']['actions']['complete']);
    }
    return $actions;
}

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

...