【问题标题】:Remove 'Move to Trash' under woocommerce order action for shop manager在商店经理的 woocommerce 订单操作下删除“移至垃圾箱”
【发布时间】:2021-11-21 08:53:07
【问题描述】:

根据这篇帖子custom post type, hide or disable the trash button in publish meta box,这是专门为帖子删除的。在 woocommerce 订单操作下,我找不到与删除“移至垃圾箱”相关的任何帖子解决方案。此代码是否同样适用于在 woocommerce 上删除此按钮?

function my_custom_admin_styles() {
?>
    <style type="text/css">
      .post-type-inhoud form #delete-action{
           display:none;
       }
     </style>
<?php
}
add_action('admin_head', 'my_custom_admin_styles');

如何将其应用于 woocommerce 删除订单操作下的“移至垃圾箱”按钮,并且仅适用于商店经理。

【问题讨论】:

    标签: css function woocommerce


    【解决方案1】:

    防止删除帖子/订单/自定义帖子是每个用户角色的能力。要防止 shop_manager 角色删除订单,您必须删除该功能。所有其他解决方案都将在视觉上起作用,但知道他的东西的人仍然可以根据需要删除订单。所以将以下函数放在你的functions.php中

    function wp23958_remove_shop_manager_capabilities() {
        $shop_manager = get_role( 'shop_manager' ); // Target user role
        //List of capabilities which we want to edit
        $caps = array(
            'delete_shop_orders',
            'delete_private_shop_orders',
            'delete_published_shop_orders',
            'delete_others_shop_orders',
        );
        // Remove capabilities from our list 
        foreach ( $caps as $cap ) {
            $shop_manager->remove_cap( $cap );
        }
    }
    add_action( 'init', 'wp23958_remove_shop_manager_capabilities' );
    

    奖励如何知道当前用户有什么能力

    function wp32985_check_user_capabilities() {
        $data = get_userdata( get_current_user_id() );
     
        if ( is_object( $data) ) {
            $current_user_caps = $data->allcaps;
            
            // print it to the screen
            echo '<pre>' . print_r( $current_user_caps, true ) . '</pre>';
        }
    }
    add_action( 'init', 'wp32985_check_user_capabilities' );
    

    【讨论】:

      【解决方案2】:

      要定位的正确 CSS 类是:.order_actions li #delete-action

      以下将为所有后端用户(管理员、商店经理等)隐藏它:

      add_action( 'admin_head', 'bbloomer_css_wp_admin' );
      
      function bbloomer_css_wp_admin() {
         echo '<style>.order_actions li #delete-action { display: none; }</style>';
      }
      

      如果您只想将此 CSS 应用于商店经理(因此不适用于管理员),您需要条件逻辑,特别是您需要使用内置的 WooCommerce 函数 wc_current_user_has_role():

      add_action( 'admin_head', 'bbloomer_css_wp_admin' );
      
      function bbloomer_css_wp_admin() {
         if ( ! wc_current_user_has_role( 'shop_manager' ) ) return;
         echo '<style>.order_actions li #delete-action { display: none; }</style>';
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-03
        • 2021-11-20
        • 1970-01-01
        • 2021-03-23
        • 2019-08-29
        相关资源
        最近更新 更多