允许仅为特定客户购买woocommerce产品

时间:2017-10-14 09:42:51

标签: wordpress woocommerce product orders purchase-order

我的要求是,我想允许只允许选定的客户购买某些特定产品。其他客户不能购买该产品。

我有所有客户电子邮件ID列表。在结账时,客户在帐单邮寄地址上添加他们的电子邮件ID,那么如果该电子邮件ID与管理员端邮件ID匹配,那么只允许购买该产品。

但是在结账页面的前端和我的帐户页面我已禁用登录和注册。所以所有客户都是客人。那么在没有用户角色限制的情况下怎么可能呢?

任何人都知道这个解决方案然后请帮助我。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用此代码,它会限制其他用户在您的网站上进行购买。它只允许您的电子邮件ID列表中的客户购买

add_action( 'woocommerce_after_checkout_validation' , 'add_user_email_restriction', 10, 2 );

function add_user_email_restriction( $data, $errors ) {

    $valid_emails = get_available_email_addresses();
    // should be in array format

    if( isset( $data[ 'billing_email' ] ) && !empty( $data[ 'billing_email' ] ) ) {
        if( !in_array( $data[ 'billing_email' ], $valid_emails ) ) {
            $errors->add( 'email', __( 'You are not allowed to purchase.', 'text-domain' ) );
        }
    }
}
function get_available_email_addresses() {
    return array('test@gmail.com','test2@gmail.com');
}