WooCommerce выдает ошибку подтверждения заказа после обновления

WooCommerce выдает ошибку подтверждения заказа после обновления

Для работы часто использую платную тему DIVI от ElegantTheme. После последнего обновления WooCommerce сайт перестал подтверждать заказы, хотя в консоли эти заказы отображались. WooCommerce выдавал сообщение «Произошла ошибка подтверждения заказа. Попробуйте подтвердить заказ позднее».

Включив отображение логов я увидел ошибки следующего характера:

PHP Warning: Declaration of ET_Theme_Builder_Woocommerce_Product_Variable_Placeholder::get_available_variations() should be compatible with WC_Product_Variable

Решение проблемы оказалось следующим:

  1. Удалить WooCommerce
  2. Скачать версию WooCommerce не выше 4.6.2
  3. Установить

Ну или как альтернатива нужно обновить шаблон. Поскольку подписка у меня кончилась, то этот вариант мне не подходил.

Как обновить редакцию Windows7

Существует несколько редакций Windows 7. Все они различаются между собой набором функций и работающих служб, но по факту это одна и та же операционная система. Microsoft предусмотрела процесс перехода из одной редакции в другую.

Варианты обновления редакций Windows 7

Для обновления нужно использовать входящую во все редакции Windows7 Windows Anytime Upgrade, которую можно найти в «Пуск». Данное программное обеспечение предназначено для изменение редакции вашей системы. Windows Anytime Upgrade скачивает и включает все необходимые службы, которые необходимы для работы в обновленной редакции. Оля обновления вам нудно будет ввести лицензионный ключ той редакции до которой вы хотите обновиться.

После прохождения процесса обновления в свойствах системы вы увидите изменения.

Добавляем каптчу при регистрации и смене пароля в WordPress

Добавляем каптчу при регистрации и смене пароля в WordPress

После публикации проекта на продакш сервер спам становится головной болью. Особенно если на некоторые действия (например создание нового пользователя) WordPress будет уведомлять вас письмом на Email. Одним из эффектных способов борьбы со спамом является использование механизма каптчи.

Капча (от CAPTCHA — Completely Automated Public Turing test to tell Computers and Humans Apart) — компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером.

Для добавления каптчи мы будем использовать плагин Advanced noCaptcha & invisible captcha. Данный плагин позволяет установить каптчу версии 2 или 3 на следующие активности WordPress

  • Форма входа
  • Регистрационная форма
  • Мультисайт-форма входа
  • Форма восстановления пароля
  • Форма сброса пароля
  • Форма комментариев
  • Новая тема bbPress
  • Ответ в теме bbPress
  • Регистрация BuddyPress
  • Оформление заказа WooCommerce

Плагин так же позволяет нам выбрать версию каптчи для установки, а именно: V2 «Я не робот», V2 невидимая, V3. Для работы каптчи достаточно определить активности, постатвив туда галочки и выбрав версию каптчи.

Так же для работы капчти вам понадобится аккаунт Google. Он нужен для того чтобы получить API ключи для работы капчти с сайтом. Получить ключи нужно на сайте https://www.google.com/recaptcha/.

 

Как легко познакомиться с Adruino

Как легко познакомиться с Adruino

Arduino — это контроллер и удобная платформа быстрой разработки электронных устройств для новичков и профессионалов. Основные преимущества данной платформы — низкий порог входа (подходит как для новичков так и для профессионалов), прекрасно подходит для обучения как основам электроники так и программированию, пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования (основан на C/C++ и скомпонован с библиотекой AVR Libc). Устройство программируется через USB без программаторов и прочих танцев с бубном.

Пример проекта собранного на Arduino можно посмотреть тут.

Я с детства немного интересовался электроникой, долго присматривался к контроллерам но руки до этого не доходили. Мне казалось это сложно. Очень сложно. Но в один момент я всё-таки решился.

Как познакомиться не покупая?

Хотя сам Arduino стоит не дорого. Но изучение Arduino предполагает еще и набор различных электронных компонентов, а их понадобится много, и разных. А вот это уже будет стоить денег.

Например готовый базовый набор контроллера с компонентами на Aliexpress будет стоить уже в районе 2500-3000 рублей.

Набор для изучения Arduino

Набор для изучения Arduino

Если вы хотите просто познакомиться с Arduino, но не хотите тратить на это деньги то можно воспользоваться эмулятором AutodeskTinkercad.

Данный эмулятор работает в браузере и не требует установки дополнительного программного обеспечения (кроме браузера само собой). В нем есть базовый контроллер ArduinoUno и набор электротехнических компонентов (резисторы, светодиоды, кнопки, датчики и тд.). Использование эмулятора предполагает наличие базовых навыков программирования и знания школьной физики. Для наглядности присутствуют уже готовые собранные и запрограммированные схемы.

Пример схемы AutodeskTinkercad

Пример схемы AutodeskTinkercad

Кроме наличия возможности собирать разные схемы и с разными элементами все это можно и программировать. Поскольку данный эмулятор рассчитан на начинающих программировать можно двумя способами:

1. Визуально с помощью блоков

2. Классически с помощью текстового редактора

Таким образом можно программировать контроллер визуально (преемственность с LEGO WEDOO, LEGO mindstorms которые активно используются в российской системе образования), так и классически с помощью написания кода на языке С/С++.

Собрав схему и написав программу (к слову программы для Arduino называю скетчами) вы увидите рабочий результат (при условии что вы все сделали верно). В эмуляторе присевают некоторые ошибки (например я столкнулся с ошибкой таймера, когда делал таймер обратного отсчета), но даже с учетом ошибок его точно вам хватит для ознакомления.

Набор ресурсов для самостоятельного изучения:
http://edurobots.ru/
https://all-arduino.ru/
https://alexgyver.ru/arduino_shop/

Карусель товаров Woocommerce

Карусель товаров Woocommerce

В одном из проектов возникла необходимость поместить карусель товаров Woocomerce. Были поставлены следующие условия:

  1. Карусель должна выводиться по шорткоду
  2. Карусель должна содержать два условных вида товаров, которые задаются по их id. (например товары по акции и новинки)
  3. Переключение между видами товаров карусели

Поскольку мне не хотелось использовать стороннее решение (по совершенно разным причинам) было решено написать своё. Сразу скажу что в данном случае я использовал functions.php, хотя все это можно оформить и в отдельный плагин.

Создание шорткода с передачей атрибутов

Шорткод — констукция вида [название шорткода и параметры] которая позволяет вставлять некоторое содержимое в запись и страницу. Например в какой-либо странице или записи нам нужно  добавить какую-то информацию из так называемой бэкенд (backend) части нашего сайта. То есть нам нужно взять некоторую информацию с помощью API WordPress, обработать ее каким то определенным способом по определенной логике, и вывести результат.

В случае карусели мы должны получить некоторое количество товаров с помощью id, обернуть нужную информацию о товаре в верстку и вывести это на экран. Id товаров будут передаваться при помощи стандартного механизма атрибутов.

Базово создание шорткода выглядит следующим образом

//[fl_carusel]
function fl_carusel_func( $atts )
{
     // тут происходит все самое интересное
 } 
add_shortcode( 'fl_carusel', 'fl_carusel_func' );

В том месте где мы хотим выводить нашу карусель мы можем написать следующее

[fl_carusel stock_ids='479, 477, 38, 1177, 534,27' new_ids='38, 479, 1161,1121,1055']

Шорткод передает 2 атрибута, которые мы можем получить внутри функции в массиве $atts. В функции мы получим их примерно так:

$stock_ids = explode(',',$atts['stock_ids']); // Получаем id товаров в массив
$new_ids = explode(',',$atts['new_ids']); // Получаем id товаров в массив

Получение информации о товарах WooCoomerce

Для получения информации о товаре WooCoomerce существует функция, которая может получить информацию о товаре по id. Функция возвращает объект товара, в свойствах которого находятся необходимая информация о товаре.

wc_get_product( id )

В цикле мы перебираем товары id которых содержаться в $stock_ids и $new_ids и выводим необходимую информацию о товаре.

for ($i = 0;$i<count($stock_ids);$i++){
   $product = wc_get_product( $stock_ids[$i] ); //Получаем объект товара
   if ($product){
      $result .= '<div class="fl_carusel_card_item fl_carusel_card_item_'.$i.'">';
      $osnprice = $product->get_price(); // Основная цена
      $product_name = $product->get_name(); // Имя товара
      $sku = $product->get_sku(); // Артикул
      $img = $product->get_image(); // Изображение
      $url = get_permalink($stock_ids[$i]); // Ссылка на товар
      $result .= $img;
      $result .= '<h4 class="fl_product_name">'.$product_name.'</h4>';
      $result .= ($sku) ? '<p class="fl_sku_str"> <span class="fl_sku_lable">Артикул:</span> <span class="fl_sku_value">'.$sku.'</span></p>': '<p class="fl_sku_str"> <span class="fl_sku_lable">Артикул не указан</span></p>';
      $result .= '<p class="fl_osnprice_str"><span class="fl_osnprice_value">'.$osnprice.'</span> <span class="fl_osnprice_currency_symbol">'.get_woocommerce_currency_symbol().'</span></p>';
      $result .= '<p><a href="'.$url.'" class="fl_button">Купить</a></p>';
      $result .= '</div>';
   }
   
}

Проворачиваем такой цикл и для $new_ids. В переменной $result мы накапливаем html строку для передачи ее бразеру.

Оборачиваем результат в верстку

Когда мы получили необходимую информацию о товарах нам нужно обернуть все в верстку, и с помощью JQuery заставить это работать. На этом подробно останавливаться не буду.

Исходные файлы проекта