我的要求是,我想允许只允许选定的客户购买某些特定产品。其他客户不能购买该产品。
我有所有客户电子邮件ID列表。在结账时,客户在帐单邮寄地址上添加他们的电子邮件ID,那么如果该电子邮件ID与管理员端邮件ID匹配,那么只允许购买该产品。
但是在结账页面的前端和我的帐户页面我已禁用登录和注册。所以所有客户都是客人。那么在没有用户角色限制的情况下怎么可能呢?
任何人都知道这个解决方案然后请帮助我。
感谢。
答案 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');
}