我已经为客户完成了一个woocommerce网站。根据客户要求,我遇到了问题。我的客户希望他们的代理商只需要能够搜索订单,但他们不能编辑任何订单,或者他们不应该看到任何其他选项。代理商应该看到所有订单详细信息,如电话号码,电子邮件和完整的帐单邮寄地址,但他们不应该编辑任何内容。
我尝试过几个用户角色编辑器,但没有一个提供该选项。 注意:所有订单仅为客人订单!
如果您有任何想法,请告诉我。
答案 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;
}