Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

50 полезных сниппетов для WooCommerce. Часть первая.

Тема в разделе "WooCommerce - основы, описания, уроки.", создана пользователем D&B, 15 янв 2014.

  1. r_z_r

    r_z_r

    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Добрый день, пытаюсь сделать дополнительное поле для вариации по примеру, поле выводится в админке, но вот при сохранении оно не сохраняется. Версия 2,4,4.
    Подскажите в какую сторону копать
     
  2. Acme

    Acme

    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    6
    Где находится файл funcion.php?
    [​IMG]
    Версия: 2.4.5
     
  3. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    functions.php относиться не к плагину, но к вашей теме, т.е. здесь
    \wp-content\themes\ИмяВашейТемы\functions.php
     
    Последнее редактирование: 23 авг 2015
    • Информативно Информативно x 1
  4. Acme

    Acme

    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    6
    Спасибо.

    Добавил в конце этого файла этот код:
    Код:
    /**
    * Change the add to cart text on single product pages
    */
    add_filter('single_add_to_cart_text', 'woo_custom_cart_button_text');
    
    function woo_custom_cart_button_text() {
    
        global $woocommerce;
     
        foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
            $_product = $values['data'];
     
            if( get_the_ID() == $_product->id ) {
                return __('Already in cart - Add Again?', 'woocommerce');
            }
        }
     
        return __('Add to cart', 'woocommerce');
    }
    
    /**
    * Change the add to cart text on product archives
    */
    add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );
    
    function woo_archive_custom_cart_button_text() {
    
        global $woocommerce;
     
        foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
            $_product = $values['data'];
     
            if( get_the_ID() == $_product->id ) {
                return __('Already in cart', 'woocommerce');
            }
        }
     
        return __('Add to cart', 'woocommerce');
    }
    Никаких изменений не увидел. В чем может быть проблема? Версия WC последняя.
    Screan:
    [​IMG]
     
  5. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    В последних версиях WooCommerce изменились названия фильтров.
    Поэтому для WooCommerce 2.4.5 правильно будет так.
    PHP:
    /**
    * Изменить текст кнопки "Добавить в корзину", если товар добавлен на странице товара
    */
    add_filter('woocommerce_product_single_add_to_cart_text''woo_custom_cart_button_text');

    function 
    woo_custom_cart_button_text() {

        global 
    $woocommerce;
        foreach(
    $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
            
    $_product $values['data'];
            if( 
    get_the_ID() == $_product->id ) {
                return 
    'Уже в корзине. Добавить?';
            }
        }
        return 
    __('Add to cart''woocommerce');
    }   

    /**
    * Изменить текст кнопки "Добавить в корзину", если товар добавлен на странице каталога
    */
    add_filter'woocommerce_product_add_to_cart_text''woo_archive_custom_cart_button_text' );

    function 
    woo_archive_custom_cart_button_text() {

        global 
    $woocommerce;
        foreach(
    $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
            
    $_product $values['data'];
            if( 
    get_the_ID() == $_product->id ) {
                return 
    'Уже в корзине. Добавить?';
            }
        }
        return 
    __('Add to cart''woocommerce');
    }
     
    • Симпатия Симпатия x 1
    • Полезно Полезно x 1
  6. Acme

    Acme

    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    6
    А можете подсказать, что у них изменилось? Дабы устанавливая следующие дополнения - не возникло вопросов.




    ---------------------------------------------------------------------------------------------------

    После установки такая проблема появилась, после того как захотел удалить из корзины файл:
    Warning: Cannot modify header information - headers already sent by (output started at **\functions.php:1) in **wp-includes\pluggable.php on line 1207

    Первый раз установил - не отображался текст. Изменил кодировку файла на UTF-8. Но это, как я понимаю, не могло повлиять.
     
  7. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    На теме storefront вот так выглядит
    - в каталоге http://take.ms/bWeiU
    - в карточке товара http://take.ms/plpSN
     
  8. Acme

    Acme

    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    6
    Не совсем это имел ввиду. Я хотел узнать, что в коде у них изменилось. Поскольку, если я правильно понял, взяв любой следующий код, к примеру, под номером 7 - Заменить «Товар отсутствует» на «Продано» и вставив его в function.php - он не сработает. Что в самом коде нужно заменять, какие переменные в новом обновлении WC поменялись?
     
  9. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Изменилось название хуков и текст для кнопок.
     
  10. ВладБлад

    ВладБлад

    Сообщения:
    199
    Симпатии:
    10
    Баллы:
    18
    Друзья, подскажите как исправить сниппет "Минимальная сумма заказа"? Он считается вместе с доставкой. :(
    А может плагин есть?
     
  11. ВладБлад

    ВладБлад

    Сообщения:
    199
    Симпатии:
    10
    Баллы:
    18
    Вот рабочий вариант сниппета для Минимальной суммы заказа. Согласны?
    PHP:
    // Set a minimum dollar amount per order
    add_action'woocommerce_check_cart_items''spyr_set_min_total' );
    function 
    spyr_set_min_total() {
        
    // Only run in the Cart or Checkout pages
        
    if( is_cart() || is_checkout() ) {
            global 
    $woocommerce;

            
    // Set minimum cart total
            
    $minimum_cart_total 10;

            
    // Total we are going to be using for the Math
            // This is before taxes and shipping charges
            
    $total WC()->cart->subtotal;
          
            
    // Compare values and add an error is Cart's total
            // happens to be less than the minimum required before checking out.
            // Will display a message along the lines of
            // A Minimum of 10 USD is required before checking out. (Cont. below)
            // Current cart total: 6 USD
            
    if( $total <= $minimum_cart_total  ) {
                
    // Display our error message
                
    wc_add_noticesprintf'<strong>A Minimum of %s %s is required before checking out.</strong>'
                    
    .'<br />Current cart\'s total: %s %s',
                    
    $minimum_cart_total,
                    
    get_option'woocommerce_currency'),
                    
    $total,
                    
    get_option'woocommerce_currency') ),
                
    'error' );
            }
        }
    }
    Вот этого кода и рассчета не хватает "Для оформления заказа не хватает N руб.". Как сделать?
     
  12. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Попробуйте такой код в functions.php вашей темы :
    PHP:
    // Ограничение по минимальной сумме при покупке товаров
    add_action'woocommerce_check_cart_items''spyr_set_min_total' );
    function 
    spyr_set_min_total() {
        if( 
    is_cart() || is_checkout() ) {
            global 
    $woocommerce;

            
    // минимальная сумма
            
    $minimum_cart_total 10000;

            
    // сумма из корзины
            
    $total WC()->cart->subtotal;
         
            
    // Сообщение об ошибке при меньшей сумме в корзине, чем лимит
            
    if( $total <= $minimum_cart_total  ) {
                
    // Display our error message
                
    $not_enough_summa $minimum_cart_total $total;
                
    wc_add_noticesprintf'Минимальная сумма заказа: %s'
                    
    .'<br>Для оформления заказа не хватает: %s',
                    
    wc_price($minimum_cart_total),
                    
    wc_price($not_enough_summa)
                    ),
                
    'error' );
            }
        }
    }
    Пример для темы storefront:
    - страница корзины http://take.ms/V6DMQ
    - страница оформления заказа http://take.ms/xKBmP
     
    • Нравится Нравится x 1
  13. ВладБлад

    ВладБлад

    Сообщения:
    199
    Симпатии:
    10
    Баллы:
    18
    Отлично! Спасибо. Работает.
     
  14. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    В предыдущем примере можно оперировать разными суммами:
    - WC()->cart->total - общая сумма заказа в корзине
    - WC()->cart->subtotal - сумма заказа без учета доставки в корзине
    - WC()->cart->shipping_total - сумма доставки в корзине
     
    • Нравится Нравится x 3
  15. Владимир Смирнов

    Владимир Смирнов

    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Подскажите добрые люди как вывести описание товара и кнопку добавить в корзину в каталоге товара, без захода в карточку товара.
     
  16. chusika

    chusika

    Сообщения:
    7
    Симпатии:
    3
    Баллы:
    3
    Мне нужен редирект со всех кнопок сайта "Добавить в корзину" при нажатии сразу на корзину. (ПРичем у меня корзина и чекаут объединены)
    Ставлю данный код в functions.php
    Код:
    add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
    
    function redirect_to_checkout() {
        global $woocommerce;
        $checkout_url = $woocommerce->cart->get_checkout_url();
        return $checkout_url;
    }
    и редирект работает только с кнопок карточки товара. С каталога и с главной при нажатии происходит все как обычно, то есть вот такой вид (редиректа нет):
    upload_2015-9-11_14-29-4.png
    Ребят помогите!
     
  17. chusika

    chusika

    Сообщения:
    7
    Симпатии:
    3
    Баллы:
    3
    Все я нашла ответ на вопрос. Оказывается теперь прямо из админки все делается.....
    Woocommerce --> Settings --> Products --> Display --> Redirect to the cart page after successful addition (поставить галку)
     
    • Нравится Нравится x 1
  18. kvo

    kvo

    Сообщения:
    59
    Симпатии:
    6
    Баллы:
    8
    Подскажите как скрыть или запретить изменение количества товара при покупке? Он всегда один.
     
  19. AlanWake

    AlanWake

    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте. Вставляю код 2. Дополнительные товары на странице/в ряду. А он не работает. В чем может быть причина?
    Шаблон starfront+boutique
    Решил проблему руками. В файле content-product.php исправил следующее:

    $woocommerce_loop['columns'] = 4;//apply_filters( 'loop_shop_columns', 4 ); костыль!

    4 отвечает за количество товаров в строке, но стиль правится отдельно.
    Может кому пригодится.
     
    Последнее редактирование: 1 окт 2015
  20. Деменция

    Деменция

    Сообщения:
    5
    Симпатии:
    1
    Баллы:
    1
    "5. Исключить категорию из виджета woocommerce -категории" Подскажите пожалуйста, как это сделать пошагово. Интернет-магазин пока на Денвере, WordPress 4.3.1 с темой оформления Storefront 1.5.1. Я сама абсолютный и древний чайник, поэтому прошу подробно и пошагово :))) Заранее благодарна!!!!