【问题标题】:Remove WooCommerce admin order action from order preview从订单预览中删除 WooCommerce 管理员订单操作
【发布时间】:2019-08-29 00:02:37
【问题描述】:

我想取消商店经理将订单标记为已完成的功能。为此,我在主题的 functions.php 文件中使用了基于 "Hide a specific action button conditionally in Woocommerce admin Orders list" 答案的以下内容:

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 页面和订单预览中删除此功能?如果没有,如何在预览窗口中隐藏此按钮?

【问题讨论】:

    标签: php wordpress woocommerce preview orders


    【解决方案1】:

    要从“商店经理”用户角色的管理员订单预览中移除“完成”更新订单状态按钮,请使用以下命令:

    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 文件中。经过测试并且可以工作。

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多