繁体   English   中英

根据 WooCommerce 中的注册 email 设置自定义用户角色

[英]Set a custom user role based on registration email in WooCommerce

我在我的 functions.php 文件中添加了一个自定义过滤器。 当我第一次加载它时,它是 Woocommerce 的几个版本,它运行良好。

现在,当所有用户的电子邮件包含.ac.uk.sch.uk时,似乎所有用户都注册为默认的“客户”而不是“学生”

滤波器function如下:

add_filter( 'woocommerce_new_customer_data', 'student_role', 10, 1 );
function student_role( $new_cust_data ) {
    if ( strpos($new_cust_data['user_email'], '.ac.uk' ) >= 1 ) {
        $new_cust_data['role'] = 'student';
    } 
    elseif ( strpos($new_cust_data['user_email'], '.sch.uk') >= 1 ) {
        $new_cust_data['role'] = 'student';
    }
    else {
        $new_cust_data['role'] = 'customer';
    }
    return $new_cust_data;
}

有什么帮助吗?

尝试在您的代码中将>= 1替换为!== false (也可以简化) ,如下所示:

add_filter( 'woocommerce_new_customer_data', 'set_new_customer_user_role_conditionaly' );
function set_new_customer_user_role_conditionaly( $args ) {
    if ( strpos($args['user_email'], '.ac.uk') !== false || strpos($args['user_email'], '.sch.uk') !== false ){
        $args['role'] = 'student';
    }
    return $args;
}

它应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM