仅允许用户只读访问woocommerce

时间:2017-03-07 17:44:19

标签: php wordpress woocommerce

我已经为客户完成了一个woocommerce网站。根据客户要求,我遇到了问题。我的客户希望他们的代理商只需要能够搜索订单,但他们不能编辑任何订单,或者他们不应该看到任何其他选项。代理商应该看到所有订单详细信息,如电话号码,电子邮件和完整的帐单邮寄地址,但他们不应该编辑任何内容。

我尝试过几个用户角色编辑器,但没有一个提供该选项。 注意:所有订单仅为客人订单!

如果您有任何想法,请告诉我。

1 个答案:

答案 0 :(得分:0)

在主题functions.php中尝试这个

// mydomain.com/my-account/view-order/xxxx - 此处的任何订单号

function my_customer_has_capability( $allcaps, $caps, $args ) {

    if ( isset( $caps[0] ) ) {
        switch ( $caps[0] ) {
            case 'view_order' :
                $user_id = $args[1];
                $order   = wc_get_order( $args[2] );

                if ( $order && $user_id == $order->user_id || my_get_current_user_role() == 'editor') {
                    $allcaps['view_order'] = true;
                }
            break;
        }
    }
    return $allcaps;
}
add_filter( 'user_has_cap', 'my_customer_has_capability', 10, 3 );

function my_get_current_user_role() {
    $current_user = wp_get_current_user();
    if ( !($current_user instanceof WP_User) )
       return;

    if( empty($current_user->roles[0]) )
        return false;

    $role = ($current_user->roles[0]);
    return (string)$role;
}