• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Вышел WooCommerce 3.0 “Bionic Butterfly” (описание на русском)

Image CMS

D&B

Администратор
Команда форума
Местный
#1
Привет форумчанам и гостям. WC обновился до версии 3.0. Изменений, разумеется, много. Полный чейнчлог на английском смотрите тут

Завтра, надеюсь, и у нас появиться полное русское описание.

Внимание! Обновляться настоятельно пока не советую!

Но если уж так неймется, по меньшей мере, убедитесь, что ваша тема и плагины уже совместимы с 3.0 и обязательно делайте бекапы.


Встречайте, WooCommerce 3.0 “Бионическая бабочка”


3.0 – это крупное обновление. Как всегда, перед тем, как начать обновление, убедитесь в том, что все расширения и темы совместимы и не забудьте сделать полный бэкап.

CRUD (Создавай, читай, обновляй и удаляй) объекты и хранение данных

Классы CRUD в 3.0 представляют собой фундаментальные изменения в том, как мы работаем с объектами данных в ядре (это товары, заказы, купоны, клиенты и т.д.)

Традиционно в WordPress, когда мы работаем, например, с записями и данными записей, мы можем обновить /получить/создать любые мета данные, которые хотим, и все изменения напрямую пойдут в базу данных. С другой стороны наш новый CRUD подход представляет новый слой, который лежит между базой данный и вашим кодом, и он добавляет структуру, валидацию и контроль.

Вот вам простой пример. Давайте представим, что у вас есть товар, а у этого товара есть цена. По старинке если вы решили обновить цену, вам нужно было:
  1. Знать, где хранится цена (мета ключ)
  2. Знать в каком формате хранятся эти данные (string? 2 десятичных разряда?)
  3. Знать, как нужно обновить данные (update_post_meta).
С CRUD вы вместо этого будете иметь список свойств товара, одно из которых – это его цена, и вы можете вызвать ->set_regular_price(), чтоб установить данные, за которыми следуют ->save(), чтоб эти данные появились в базе данных

И здесь вас совершенно не волнует где что хранится, и какое форматирование используется. Например:

Код:
1. $product = wc_get_product( 1 );
2. $product->set_regular_price( 10.99 );
3. $product->save();
Преимущества?
  • Мы определяем структурированные данные для каждого ресурса, и вам легко в них ориентироваться.
  • Мы контролируем поток данных и любые нужды валидации
  • Вам не нужно знать из чего состоят данные, с которыми вы работаете
  • Данные можно переместить куда угодно, к примеру, это могут быть кастомные таблицы, и это не затронет существующий код
  • Можно использовать повторно (API, CLI, WP Admin). Имеется большее покрытие модульных тестов
Это изменение должно существенно улучшить производительность в будущем

Новая товарная галерея

2017-04-05_21-38-10.png


  • Посетители теперь получили доступ и к лупе, и к зумированию (lightbox)
  • Более интуитивное поведение галереи: клик на миниатюру теперь обновит главное изображение, вместо того, чтоб открыть lightbox.
  • Крупные изменения также коснулись и «ручных» действий в целом; листаем чтоб продвигаться по галереи, щипком увеличиваем фото, проведите по экрану вверх-вниз, чтоб приблизить фото и т.д.
  • Открытие lightbox на мобильных устройствах теперь отобразит изображение в его истинном размере, который крупнее, чем отображение в странице.
Чтоб избежать сбоя кастомных лайтбоксов в темах, в не дефолтных WordPress-темах нужно будет включить новую функциональность, используя add_theme_support().

Новый CLI (Интерфейс командной строки) и Rest API v2

У версии 2.6. уже был CLI, но он был кастомный и не имел общего кода с остальной частью кодовой базы. Он был достаточно бесполезный, так что, в конце концов, у нас появился полновесный REST API. В 3.0.x мы создали новый CLI, который напрямую интегрируется с REST API и поддерживает всю ту же функциональность.

Мы также представили новую версию API с несколькими улучшениями:

  • Поддерживает метаданные на большинстве конечных точек
  • Новые конечные точки вариации для создания и обновления вариаций. В довершении мы пубрали возможность управлять манипуляциями прямо из товарных конечных точек.
  • Конечная точка «Настроек» (обновить/просмотреть настройки магазина).
  • Конечные точки зон доставки
  • Конечные точки методов доставки и оплаты, включая «Настройки»
  • Добавлена поддержка аутентификации oAuth1.0a, с использованием хэдеров
  • Дополнительное кэширование и удаление медленных запросов (запрос «Старый заказ» из пользовательской части API).
Новая система регистрации

db-logs_720.png


Обработчик журнала базы данных

Новый регистратор, который может быть использован расширениями для регистрации событий, ошибок, предупреждений, ограничений адресов в нашем старом регистраторе. Он использует обработчики журнала и внедряет методы, описанные интерфейсом регистратора PSR-3, который гораздо более всеобъемлющий.

Новый регистратор имеет 2 два обработчика: файла и базы данных. Обработчик базы данных можно внедрить при помощи;

Код:
define( 'WC_LOG_HANDLER', 'WC_Log_Handler_DB' );
Улучшения по части производительности

В версии 3.0.x. появились следующие новшества для улучшения производительности:

  • Для вариативных товаров мы попытались оптимизировать синхронизацию вариативных товаров. Метаданные «Цена выше/ниже» упразднены и теперь есть только главные цены, а также вес и габариты дочерних товаров.
  • В наших шаблонных файлах мы удалили WP_Query из up-sells.php и related.php и заменили их на PHP foreach loop (так как у нас уже есть ID товара). Это значит, что мы избавились от одного тяжелого запроса на страницах товара и корзины.
  • Мы убрали функцию, согласно которой старые заказы получали доступ к новым загрузкам в процессе редактирования товара. Зацикливание тысяч товаров на это обновление может обернуться для некоторых магазинов бременем производительности. А также это может привести к возникновению неожиданного поведения, так что после такого обновления мы обновили и редактируемые загрузки, так что редактирование файла не помешает покупателю его скачать.
  • Мы удалили колонку ‘позиции заказа’ на странице заказа. Это, конечно, может быть полезно, но если загружаются все позиции заказа на странице, то это явно не улучшит производительность. Возможно, мы вернем эту колонку в будущем, но она должна быть динамичной, так что подождем до будущего редизайна UI.
  • Вместо того, посылать emailы в один большой запрос, когда заказ переходит в стадию оформления, мы внедрили отложенное CRON-событие для отсылки emailов. Оно позволяет отсылать emailы после небольшой задержки в качестве отдельных запросов, благодаря чему процесс оформления заказа стал быстрее 50%
Кроме того, так как присоединение к мета таблице записи может привести к существенному замедлению работы сайта, если у вас большой каталог товаров, мы оптимизировали этот процесс, чтоб больше использовать таксономии для товарных фильтров фронтенда.

  • Видимость товаров (контролирует видимость ваших товаров в каталоге, поиске, или и там, и там) была ранее мета записи и использовалась во всех WooCommerce товарных запросах. В 3.0 это - новая таксономия product_visibility. Тест, в котором приняло участие ~8k товаров, показал улучшение производительности примерно равное 94%.
  • Сопутствующие товары также используют новую таксономию product_visibility, вместо мета, что позволяет улучшить запросы.
  • И то же самое для товаров на распродаже. Если вы скрываете распродажные товары в каталоге на распродаже, то это приведет к улучшению производительности.

Все остальное
  • Сортировка налоговых ставок была раньше процессом ручным. Но когда у вас скапливались целые страницы этих налоговых ставок, то этот процесс превращался в настоящий ад. В 3.0.x мы сортируем ставки автоматически, помещая более специфические правила над общими правилами.
  • Во фронтенде мы внедрили отказ от предупреждений, который действует во всем магазине, благодаря чему стало появляться меньше проблем, которые появлялись, когда предупреждения перекрывали контент на мобильных устройствах.
  • В WordPress сетях/мультисайтовых инсталляциях, когда пользователь авторизуется в магазине со своего аккаунта, но не того аккаунта, который принадлежит этому конкретному магазину, WooCommerce добавит этих существующих пользователей к текущему магазину, а не выкатит ошибку, как это было в версии 2.6.
  • Ранее, структурированные данные были выходными потоками в наших шаблонных файлах. В 3.0 мы переключились на формат JSON-LD, который позволяет сохранять наши шаблонные файлы чистыми и аккуратными, а также сохраняет данные нетронутыми, если кастомизацией занимаются разработчики тем.
  • Если проводится платеж PayPal Standard, то средства сейчас захватываются автоматически, когда статус заказа меняется на «В процессе» или «Завершен». В 2.6.x это проделывалось вручную.
  • Мы слили типы купонов Процент корзины и Процент товара в один и удалили дисконты product_cart. Скидки, которые дают эти купоны, идентичны, но валидация, в основе которой лежала корзина, останавливала применение купона, если в корзину попадал не соответствующий критериям товар, вместо того, чтоб просто выдавать скидки для подходящих под данные критерии товаров, как это делают купоны. Это было очень не интуитивно, и вызывало недоумение, как со стороны покупателя, так и со стороны владельца магазина, и что важнее всего, пользователям приходилось оформлять заказ дважды, чтоб применить эти купоны.
  • Цены вариативных товаров, которые содержат распродажные наименования, теперь не зачеркиваются. Цены распродаж никуда не делись и появляются при выборе вариации.
  • Сгруппированные товары теперь перелинкованы от родительского товара, а не от дочернего. Дочерние товары могут содержаться более чем в одной группе.
ИСТОЧНИК

bionic-butterfly.png
 
Последнее редактирование:

tuxfighter

Гуру
Местный
#2
обновился на тестовом сайте.
Да, стоит дождаться как минимум перевода и обновления темы....
 

andrej

Новичок
#3
в настройках "Активировать Lightbox для изображений товара" куда то пропал, из за чего Lightbox перестал работать.
В списке товаров, заголовки были в <H3>, в новой версии они в <H2> с какого то перепугу... что то еще съехало

откатил назад
 
Последнее редактирование:

Радик

Форумчанин
#4
в настройках "Активировать Lightbox для изображений товара" куда то пропал, из за чего Lightbox перестал работать.
В списке товаров, заголовки были в <H3>, в новой версии они в <H2> с какого то перепугу... что то еще съехало

откатил назад
Тоже обновился... а зря... не подскажите как откатиться назад?
 

andrej

Новичок
#5
Проще и удобнее всего, из репозитория вордпресс установите плагин WP Rollback, там можно откатить на любую версию плагина.
После отката можно деактивировать WP Rollback.
 
#6
Ну и зря откатывались. Документацию видимо только дураки читают.
Тем у кого перестали работать лайтбоксы решение от разработчиков вот. Нужно в теме включить поддержку новых галерей.

add_action( 'after_setup_theme', 'yourtheme_setup' );

function yourtheme_setup() {
add_theme_support( 'wc-product-gallery-zoom' );
add_theme_support( 'wc-product-gallery-lightbox' );
add_theme_support( 'wc-product-gallery-slider' );
}

Видео новой галереи вот
 
А

Автозапчасти54.рф

Guest
#8
Доброе утро. Подскажите как вернуть или доработать эти косяки.
Суть в ток что я новичок в этом. С момента начало работы с сайтом не разу не делал резервную копию. Как теперь вернуть или до работать эти все ошибки. Вариация перестала работать.
Пожалуйста помогите.......
 

Вложения

А

Автозапчасти54.рф

Guest
#10

tuxfighter

Гуру
Местный
#11
правильно - на стороне хостинга, его инструментами
плагином - не знаю, не пользуюсь
 
А

Автозапчасти54.рф

Guest
#12
правильно - на стороне хостинга, его инструментами
плагином - не знаю, не пользуюсь
Сейчас глянул на хостинге но он сохранил автоматически 11.02.2017 08:10.... А то что я редактировал после этого сохранения? Как быть в этой ситуации?
 

tuxfighter

Гуру
Местный
#13
Сейчас глянул на хостинге но он сохранил автоматически 11.02.2017 08:10.... А то что я редактировал после этого сохранения? Как быть в этой ситуации?
страдать.

Хороший хостинг предлагает бэкап по расписанию, ежедневный или в ручном режиме
 

bug008

Новичок
#14
Добрый день! Пришлось обновиться - все прошло не так страшно, так как к теме Flatsome разработчик паралллельно выпустил аж два апдейта. Но вот с переводом пришлось повозиться. При том, что как казалось, слова и фразы в переводе есть. Но, теперь важен регистр, то есть "Return to shop" теперь пишется "Return To Shop" и движек, соответственно, старое значение не принимал. Правил, либо добавлял новое значение через Loco Translate напрямую в pot-файле, потом привинчивал (если значение добавлено) перевод. За день видимые снаружи огрехи поправил. Желаю успеха,
С уважением
 
#15
Кто-нибудь уже успел замерить скорость загрузки сайта с Woocommerce? Это самое важное в наше время (для меня лично).
 

mczmike

Новичок
#16
всем привет, обновился вместе с темой Flatsome, пока всё вроде в порядке, не хватает перевода. Может переведу сегодня, выложу
 

nyrt

Форумчанин
#18
... Нужно в теме включить поддержку новых галерей.

add_action( 'after_setup_theme', 'yourtheme_setup' );

function yourtheme_setup() {
add_theme_support( 'wc-product-gallery-zoom' );
add_theme_support( 'wc-product-gallery-lightbox' );
add_theme_support( 'wc-product-gallery-slider' );
}
Помогите, пожалуйста! Как именно это сделать?
 

Vl@dimir

Новичок
#20
Помогите, пожалуйста! Как именно это сделать?
В файле вашей темы function.php копируем этот текст и меняем

add_action( 'after_setup_theme', 'имя вашей темы_setup' );

function имя вашей темы_setup() {
add_theme_support( 'wc-product-gallery-zoom' );
add_theme_support( 'wc-product-gallery-lightbox' );
add_theme_support( 'wc-product-gallery-slider' );
}

в этом файле вы увидите на примере имя вашей темы