【问题标题】:Manage customers to be allowed to purchase in Woocommerce管理允许在 Woocommerce 中购买的客户
【发布时间】:2019-05-07 05:05:09
【问题描述】:

我们有带有 eshop 的批发网站。我们需要阻止新客户购买任何东西,直到我们验证他(因为运输限制等等)。是否有可能(通过为他设置不同的角色或阻止客户角色购买)?

顺便说一句,我发现了这个,但我更喜欢改变用户,而不是产品,因为我们想要所有产品的锁。在插入新产品时,有人可能会忘记设置正确的产品类别。 Restrict woocommerce product to certain customer to buy

【问题讨论】:

    标签: php wordpress woocommerce product usermanager


    【解决方案1】:

    以下代码将禁用产品购买(到处隐藏添加到购物车按钮),直到客户在管理员用户部分页面中通过自定义选择字段获得商店经理的批准,以允许客户购买产品:

    // 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 文件中。经过测试并且可以工作。

    【讨论】:

    • 哇,这看起来很棒,我明天测试它然后接受。非常感谢。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 2022-07-11
    • 2012-11-07
    • 2019-08-14
    • 1970-01-01
    相关资源
    最近更新 更多