Leave at Door: бесплатный плагин для WooCommerce, позволяющий включить бесконтактную доставку

Многие страны мира стараются в той или иной форме ограничить распространение коронавируса. Индустрия гостеприимства стала одной из наиболее пострадавших от этих мер отраслей. Рестораны, кафе, пивоварни – всем им пришлось радикально изменить методы ведения своего бизнеса, чтобы остаться на плаву. Многие ввели свои собственные службы доставки. Скотт Делузио, разработчик плагинов для WordPress, основатель Amplify Plugins, …

Подробнее

Все что нужно знать про WP Cron в WordPress

Что такое cron и в чем его отличие от wp-cron? Cron — команда UNIX, которая используется для выполнение периодических задач, через заданный промежуток времени. Wp-cron — псевдо-крон, который необходим для выполнение функционала обычного крона, но в рамках wordpress. Он необходим для следующих задач: проверка обновлений ядра, плагинов, тем функционал сторонних плагинов, которые используют cron. Особенности …

Подробнее

Принципы SOLID и с чем их едят?

SOLID — мнемонический акроним, введённый Майклом Фэзерсом (Michael Feathers) для первых пяти принципов, названных Робертом Мартином в начале 2000-х, которые означали пять основных принципов объектно-ориентированного программирования и проектирования. Для чего нужны принципы SOLID? Принципы SOLID — это набор правил, которые необходимо применять во время работы над программным обеспечением(ПО) для его улучшения. Удивительно то, что принципы …

Подробнее

Dependency Injection (Внедрение зависимостей)

Проблема class Order { public $id; } class Order_Processing { public function create_new_order(): void { /* Логика выполнения заказа */ $this->log(‘Order created!’); } private function log( string $message ): void { echo «Save log with message: {$message}» . PHP_EOL; } } $order_processing = new Order_Processing(); $order_processing->create_new_order(); В классе Order_Processing принцип Single Responsibility т.к. кроме обработки …

Подробнее

DOMDocument

DOMDocument — класс для работы с XML-документами. Данный инструмент удобно использовать, когда вам необходимо парсить xml/html-документы. Простой пример использования класса DOMDocument: $dom = new DOMDocument(); $dom->loadHTML( $html ); $dom->saveHTML(); Рассмотрим основные ошибки и сложности с которыми можно столкнуться: Кодировка Невалидный документ Выбор елементов Удаление елементов Кодировка Для начала документ нужно загрузить с корректной кодировка. В …

Подробнее

Как подружить WordPress и Twig

Что такое шаблонизатор? Шаблонизатор (в web) — программное обеспечение, позволяющее использовать html-шаблоны для генерации конечных html-страниц. Основная цель использования шаблонизаторов — это отделение представления данных от исполняемого кода. Часто это необходимо для обеспечения возможности параллельной работы программиста и дизайнера-верстальщика. Использование шаблонизаторов часто улучшает читаемость кода и внесение изменений во внешний вид, когда проект целиком выполняет один человек. Wikipedia Самая важная функция …

Подробнее

100 дней ответов на StackOverflow

Все разработчики знают такой сервис как StackOverflow(SO). Для тех, кто не знает — это самая популярная система вопрос/ответ для разработчиков и администраторов. На платформе можно найти идеи для своих реализаций в виде кода, задавать вопросы и отвечают на них. Метки и фильтры Мир ИТ сейчас достаточно широк и разбираться во всем невозможно, поэтому нужно отметить …

Подробнее

WordPress Coding Standards(WPCS)

WPCS — это набор правил PHP_CodeSniffer (сниффы) для проверки кода, разработанного для WordPress. Он обеспечивает качество кода и соблюдение соглашений официальных стандартов кода для WordPress. Если вы работаете в команде из более 1-го человека, то стоит подумать о едином стандарте коде (code style). Даже если вы в своей команде смогли договорится о каком-то стандарте, то …

Подробнее

Автозагрузка классов для WordPress

Если вы используете у себя в проектах сотни require или include, то вам точно стоит прочесть эту статью. Зачем нужна автозагрузка? Автозагрузка (autoload) нужна для того, чтобы навсегда избавится от require, include и постоянного изменения порядка их подключения. Рассмотрим два вариант autoload: composer spl_autoload Autoload своих классов через composer В файл composer.json нужно добавить директиву …

Подробнее

Автоматизиция тестирования

Тестирование —  проверка соответствия между реальным и ожидаемым поведением программы. При изменении вашего кода, вам необходимо проверить, как эти изменения повлияли на работу приложения. После этого вам нужно воспроизвести как можно больше различных случаев, как реальные пользователи будут пользоваться вашим приложением. Убедившись, что приложение работает, можно считать свою работу выполненой. Вроде как очень простой и …

Подробнее

Модульное тестирование(Unit tests) с помощью PHPUnit

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

Подробнее

Модульное тестирование WordPress (PHPUnit, WP_Mock)

Кто еще не знаком с тестированием и модульным тестированием можете ознакомится: Автоматизация тестирования, Модульное тестирование с помощью PHPUnit. Тестирование тем и плагинов под WordPress имеет одну большую проблему — взаимодействие с ядром. Решить ее можно с помощью библиотеки 10up/WP_Mock. Библиотека 10up/WP_Mock помогает делать заглушки для ф-ций и классов из ядра WordPress. Установка библиотеки 10up/WP_Mock для …

Подробнее

Как тестировать Hard Dependencies в PHPUnit с помощью Mockery

Если у вас возникают вопросы: Что такое Hard Dependencies и почему это плохо? Вы можете прочитать в статье https://wp-punk.com/dependency-injection/. Внедрения зависимостей (Dependency Injection) один из основных принципов, которых нужно придерживаться для написание качественного кода. Но иногда мы сталкиваемся с проблемами, когда избежать зависимостей невозможно или же это занимает слишком много времени. Сложность заключается в том, …

Подробнее

Как тестировать константы?

Исходный код: class Constant { public function abspath() { return ABSPATH; } } Для тестирования необходимо немного изменить код. Константы необходимо получать через функцию constant: class Constant { public function abspath() { return constant( ‘ABSPATH’ ); } } Для тестирования используем библиотеку lucatume/function-mocker. Установим ее через composer: composer require lucatume/function-mocker В файле bootstrap.php инициализируем FunctionMocker: …

Подробнее