Задать вопрос
  • Как вывести надпись вместо цены Woocommerce?

    @Sell_Your_Soul Автор вопроса
    Вопрос решен, вот код который нужно вставить в functions.php (а лучше создать сниппет через плагин и не трогать functions.php).
    Код нашел на CodeRoad, автор: LoicTheAztec. Я немножко модифицировал его под свои нужды.
    Незарегистрированные пользователи и пользователи с ролью "Клиент" будут видеть вместо цены надпись у товаров, у которых вес = 1.
    //Текст, который будет вместо цены
    function product_price_replacement(){
        return 'Для профессионального использования';
    }
    
    // Замена цены на текст
    add_filter( 'woocommerce_get_price_html', 'filter_get_price_html_callback', 10, 2 );
    function filter_get_price_html_callback( $price, $product ){
        if(( $product->get_weight()== 1 ) and ((!is_user_logged_in() or current_user_can('customer')) )) {
            $price = product_price_replacement();
        }
        return $price;
    
    }
    
    // Отключение возможности добавить в корзину
    add_filter( 'woocommerce_variation_is_purchasable', 'woocommerce_is_purchasable_filter_callback', 10, 2 );
    add_filter('woocommerce_is_purchasable', 'woocommerce_is_purchasable_filter_callback', 10, 2 );
    function woocommerce_is_purchasable_filter_callback( $purchasable, $product ) {
        $product_id = $product->get_parent_id() > 0 ? $product->get_parent_id() : $product->get_id();
        if( (( $product->get_weight()== 1 ) and ((!is_user_logged_in() or current_user_can('customer')) ))) {
            $purchasable = false;
        }
        return $purchasable;
    }
    Ответ написан
    Комментировать
  • Как отображать вариацию товара WooCommece только для определенной роли пользователя?

    @Sell_Your_Soul Автор вопроса
    Собственно сам и решил вопрос, вот код который нужно вставить в functions.php (а лучше создать сниппет через плагин и не трогать functions.php).
    Код нашел на CodeRoad, автор: LoicTheAztec. Я немножко модифицировал его под свои нужды.
    //Текст, который будет вместо цены
    function product_price_replacement(){
        return 'Для профессионального использования';
    }
    
    // Замена цены на текст
    add_filter( 'woocommerce_get_price_html', 'filter_get_price_html_callback', 10, 2 );
    function filter_get_price_html_callback( $price, $product ){
        if(( $product->get_weight()== 1 ) and ((!is_user_logged_in() or current_user_can('customer')) )) {
            $price = product_price_replacement();
        }
        return $price;
    
    }
    
    // Отключение возможности добавить в корзину
    add_filter( 'woocommerce_variation_is_purchasable', 'woocommerce_is_purchasable_filter_callback', 10, 2 );
    add_filter('woocommerce_is_purchasable', 'woocommerce_is_purchasable_filter_callback', 10, 2 );
    function woocommerce_is_purchasable_filter_callback( $purchasable, $product ) {
        $product_id = $product->get_parent_id() > 0 ? $product->get_parent_id() : $product->get_id();
        if( (( $product->get_weight()== 1 ) and ((!is_user_logged_in() or current_user_can('customer')) ))) {
            $purchasable = false;
        }
        return $purchasable;
    }
    Ответ написан
    Комментировать