管理客户以允许在WooCommerce中购买

3
我们有一个带eshop的批发网站。由于运输限制等原因,我们需要在验证客户身份之前禁止新客户购买任何商品。是否可以通过为其设置不同的角色或阻止购买者角色购买来实现此目的?顺便说一句,我找到了这个链接,但我更喜欢更改用户而不是产品,因为我们希望所有产品都被锁定。当插入新产品时,可能会忘记设置正确的产品类别。 限制WooCommerce特定客户购买产品
1个回答

3
以下代码将禁用产品购买(在所有地方隐藏添加到购物车按钮),直到管理员在管理用户部分页面中使用自定义选择字段批准客户,以允许客户购买产品:
// Disable purcahses if customer is not approved
add_filter( 'woocommerce_is_purchasable', 'purchasable_products_based_on_city', 10, 2 );
function purchasable_products_based_on_city( $purchasable, $product ) {
    if( ! get_user_meta( get_current_user_id(), 'can_purchase', true ) )
        $purchasable = false;

    return $purchasable;
}

// Add allowed custom user field in admin
add_action( 'show_user_profile', 'add_user_validation_field', 1, 1 );
add_action( 'edit_user_profile', 'add_user_validation_field', 1, 1 );
function add_user_validation_field( $user )
{
    $value = get_user_meta( $user->ID, 'can_purchase', true );

    $selected0 = ! $value ? ' selected="selected"' : '';
    $selected1 = $value   ? ' selected="selected"' : '';

    ?><h3><?php _e("Customer validation (Allow purchase)", "woocommerce" ); ?></h3>
    <table class="form-table"><tr>
        <th><label for="can_purchase">Customer can purchase</label></th>
        <td><select style="" id="can_purchase" name="can_purchase" class="select short">
            <option value=""<?php  echo $selected0; ?>><?php _e("Not allowed", "woocommerce"); ?></option>
            <option value="1"<?php echo $selected1; ?>><?php _e("Yes (validated)", "woocommerce"); ?></option>
        </select></td></tr></table><br /><?php
}

// Save allowed custom user field in admin
add_action( 'personal_options_update', 'save_user_validation_field' );
add_action( 'edit_user_profile_update', 'save_user_validation_field' );
function save_user_validation_field( $user_id )
{
    if( isset($_POST['can_purchase']) )
        update_user_meta( $user_id, 'can_purchase', esc_attr( $_POST['can_purchase'] ) );
}

代码放在您的活动子主题(或活动主题)的function.php文件中。已测试并可用。

在此输入图片描述


哇,这看起来很棒,我明天会测试一下然后接受。非常感谢你。 :) - eXPRESS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接