top
logo


Вышел WooCommerce 3.0 “Bionic Butterfly” (описание на русском) PDF Печать E-mail
Автор: Administrator   
03.05.17 14:16

 

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


Создаем свой интернет-магазин на WordPress.



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). Имеется большее покрытие модульных тестов

Это изменение должно существенно улучшить производительность в будущем

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


  • Посетители теперь получили доступ и к лупе, и к зумированию (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).


Новая система регистрации




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

Новый регистратор, который может быть использован расширениями для регистрации событий, ошибок, предупреждений, ограничений адресов в нашем старом регистраторе. Он использует обработчики журнала и внедряет методы, описанные интерфейсом регистратора 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. Скидки, которые дают эти купоны, идентичны, но валидация, в основе которой лежала корзина, останавливала применение купона, если в корзину попадал не соответствующий критериям товар, вместо того, чтоб просто выдавать скидки для подходящих под данные критерии товаров, как это делают купоны. Это было очень не интуитивно, и вызывало недоумение, как со стороны покупателя, так и со стороны владельца магазина, и что важнее всего, пользователям приходилось оформлять заказ дважды, чтоб применить эти купоны.
  • Цены вариативных товаров, которые содержат распродажные наименования, теперь не зачеркиваются. Цены распродаж никуда не делись и появляются при выборе вариации.
  • Сгруппированные товары теперь перелинкованы от родительского товара, а не от дочернего. Дочерние товары могут содержаться более чем в одной группе.


    {jcomments on}
Последнее обновление 03.05.17 14:25
 
Интересная статья? Поделись ей с другими:

bottom

 

Unreal Commander PfSense по русски Яндекс.Метрика