为Woocommerce 3中的特定用户角色隐藏“发送到其他地址”

时间:2018-08-09 17:16:45

标签: php wordpress woocommerce checkout user-roles

使用插件:“用户角色编辑器”添加其他角色。

创建了一个角色:“ SpecialCust”

如果用户有此举动,我尝试取消将“运送到其他地址”的操作,但实际上并没有像看起来那样拿起代码。

function Unset_Shipping_adress() {
    // Get the user object.
    $user = get_userdata( $user_id );

    // Get all the user roles as an array.
    $user_roles = $user_meta->roles;

    // Check if the role you're interested in, is present in the array.
    if ( in_array( 'SpecialCust', $user_roles, true ) ) {
        add_filter( 'woocommerce_cart_needs_shipping_address', '__return_false');
    }
}

1 个答案:

答案 0 :(得分:1)

已更新

您的代码中缺少一些部分,可以对其进行简化。请尝试以下操作:

add_action('init', 'unset_shipping_address' );
function unset_shipping_address() {
    // HERE the targeted user roles
    $user_roles = array('SpecialCust', 'SpecialCust2', 'SpecialCust3');

    // Check user roles to hide “Ship to a different address”
    foreach( $user_roles as $user_role ) {
        if ( current_user_can( sanitize_title( $user_role ) ) ) {
            add_filter( 'woocommerce_cart_needs_shipping_address', '__return_false');
            break; // Found, we stop the loop
        }
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。应该可以。