[英]Remove WooCommerce admin order action from order preview
對於商店經理,我想刪除將訂單標記為已完成的功能。 為此,我使用了以下基於“ 在 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 頁面和訂單預覽中刪除此功能? 如果沒有,如何在預覽窗口中隱藏此按鈕?
要從“商店經理”用戶角色的管理員訂單預覽中刪除“完成”更新訂單狀態按鈕,請使用以下命令:
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 文件中。 測試和工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.