Поддержка Поиск специалистов Ограничить количество покупок на одного пользователя в месяц по роли WooCommerce

  • Привет, нашел вот такой код, который дает возможность купить только 1 товар в неделю, помогите модифицировать, нужно что бы действовало несколько ограничений по ролям пользователей.
    Плагин Woocommerce
    Например:
    Гость — только бесплатные продукты
    Про — 25 загрузок в месяц
    Голд — 60 загрузок в месяц.

    
    
    // Utility conditional function (Check if user has purchased in the passed week)
    function has_week_purshases( $user_id = 0 ){
        global $wpdb;
    
        $customer_id = $user_id > 0 ? $user_id : get_current_user_id();
    
        $count = $wpdb->get_var( "
            SELECT COUNT(p.ID)
            FROM {$wpdb->prefix}posts as p
            INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
            WHERE p.post_type LIKE 'shop_order'
            AND pm.meta_key LIKE '_customer_user'
            AND pm.meta_value = $customer_id
            AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(NOW()) - (86400 * 7))
        " );
    
        return $count > 0 ? true : false;
    }
    
    // product add to cart validation
    add_filter( 'woocommerce_add_to_cart_validation', 'conditionally_allowing_product_added_to_cart', 10, 3 );
    function conditionally_allowing_product_added_to_cart( $passed, $product_id, $quantity) {
        // If cart is not empty, customer will not be allowed and a notice will be displayed
        if ( ! WC()->cart->is_empty() ){
            // Display an error notice if there is already an item in cart
            wc_add_notice( __("You can only add an item to cart"), 'error' );
            $passed = false; // Not Allowed
        } elseif ( is_user_logged_in() && has_week_purshases() ) {
            // Display an error notice when customer is not allowed yet
            wc_add_notice( __("You are not allowed yet to add any product in cart"), 'error' );
            $passed = false; // Not Allowed
        }
        return $passed;
    }
    
    // Cart and checkout validation
    add_action( 'woocommerce_check_cart_items', 'conditionally_allowing_checkout' );
    add_action( 'woocommerce_checkout_process', 'conditionally_allowing_checkout' );
    function conditionally_allowing_checkout() {
        if ( sizeof(WC()->cart->get_cart()) > 1 ) {
            // Display an error notice if there is more than 1 item in cart
            wc_add_notice( _("You can only have only one item in cart"), 'error' );
        } elseif ( is_user_logged_in() && has_week_purshases() ) {
            // Display an error notice when customer is not allowed yet
            wc_add_notice( __("You are not allowed yet to make purchases"), 'error' );
        }
    }
    
    • Тема изменена 3 мес., 2 нед. назад пользователем  serovwa.
    • Тема изменена 3 мес., 2 нед. назад пользователем  Yui. Причина: для оформления кода существует кнопка code
    • Тема изменена 3 мес., 2 нед. назад пользователем  Yui.
Просмотр 8 ответов — с 1 по 8 (всего 8)
Просмотр 8 ответов — с 1 по 8 (всего 8)