PHP-фреймворк Tempest
Tempest – PHP MVC микро-фреймворк, который не мешает вам работать.
Совместимость WordPress 6.4 с PHP
Стремясь держать сообщество WordPress в курсе событий, в этой заметке мы приводим обновленную информацию о совместимости с PHP предстоящего выпуска WordPress 6.4, запланированного на 7 ноября 2023 года.
Как добавить свою вкладку в настройки WooCommerce
По работе я провожу значительную часть времени за аудитом сторонних расширений. Одним из удивительных моментов в процессе аудита является наблюдение за тем, куда разработчики помещают свои настройки.
Программное расширение robots.txt, созданного в Yoast SEO
В новых версиях плагина Yoast SEO присутствует неприятная ошибка, которая делает виртуальный robots.txt невалидным.
Нормализация composer.json
Если вы, как и я, любите порядок во всём, то могу порекомендовать пакет composer-normalize, который помогает поддерживать ключи composer.json в соответствии со схемой schema.json.
WP All Import: Атрибуты на русском языке в запросах XPath
XPath не позволяет делать запросы на кириллице вида {param[@name="Руль"]}
, но мы попробуем обойти это ограничение.
Поиск по произвольным полям WordPress без плагина
Пользовательские произвольные поля — это одна из самых мощных функций, доступных в WordPress.
Как переопределять РНР классы через Composer
В этом руководстве мы рассмотрим, как переопределять классы с помощью Composer.
Использование yield в провайдерах данных PHPUnit
Изначально я хотел написать общий пост о PHP генераторах, функции, появившейся в PHP 5.5.
Ошибка «Constant CONSTANT_NAME Already Defined» в PHPUnit
Если вы используете PHPUnit для запуска множества тестов, каждый из которых определяет константы, то вы можете столкнуться с ошибкой «Constant CONSTANT_NAME Already Defined» при попытке запустить их вместе.
Отличие composer install от composer update
В одном из чатов поддержки WordPress прозвучал простой, на первый взгляд, вопрос: «В чем отличие команды composer install
от команды composer update
«, на который я постараюсь ответить как можно подробнее.
TailPress — быстрое создание темы WordPress с помощью Tailwind CSS
TailPress — это ваша отправная точка для разработки тем под WordPress с помощью Tailwind CSS. Поставляется с поддержкой редактора блоков Gutenberg из коробки.
Как использовать InnerBlocks в блоках ACF
Моя любимая новая функция в Advanced Custom Fields 5.9 — поддержка InnerBlocks. Это позволяет вам вставлять любой блок (из ядра или пользовательский) внутрь блока ACF.
Как отключить встроенные блоки WordPress
Хотя я стараюсь поддерживать все основные блоки в темах, которые я создаю, иногда имеет смысл удалить некоторые из блоков.
Статический анализатор кода Psalm в WordPress
Статические анализаторы кода (PHPStan, Psalm, Phan) просто читают код и пытаются найти в нём ошибки.
Tabnine — искусственный интеллект для вашего PhpStorm
Tabnine (ранее Codota) — самый лучший плагин для автодополнения кода с привлечением искусственного интеллекта и нейросетей в PhpStorm.
Low Coupling и High Cohesion
Качественный дизайн обладает слабой связанностью (low coupling) и сильной связностью (high cohesion).
Кастомизация цветовой палитры ACF
Вы когда-нибудь хотели определить точную цветовую палитру для поля выбора цвета в ACF?
Расширение экрана «Здоровье сайта» в WordPress 5.8
В предстоящем релизе WordPress 5.8 запрос на расширение разработчиком экрана «Здоровье сайт» (Site Health), путём добавления вкладок со своим содержимым, выполнен (#47225).
Unit tests matter
Или Roadmap для Unit тестов на WordPress.
Лучшие практики для главного файла плагина
После жаркой дискуссии о том, как должен выглядеть главный файл плагина, внутри твита от Mark Jaquith, я решил написать свой вариант, с большинством пунктов я согласен, но об этом позже.
Состоянии гонки (Race condition) на примере счетчика
Состояние гонки или опасность гонки — это состояние электроники, программного обеспечения или другой системы, в котором основное поведение системы зависит от последовательности или времени других неконтролируемых событий.
UI тесты для WordPress (Codeception + WP Browser)
UI (E2E, GUI) тесты полностью эмулируют поведение пользователей в браузере. Данные тесты относятся к приемочному (acceptance) виду тестирования.
Замена конструкций exit/die в unit-тестах
Если в коде вы используете die/exit то PHPUnit прекратит свою работу в этот момент. Для этого нам нужно заменить конструкцию exit
или die
. Но это сделать сложно т.к. Functions Mocker с этим не справляется.
Чудо Mockery для заглушек в unit тестах
Потрясающая библиотека Mockery, которая сделает вашу жизнь лучше во время написания тестов.
Модульное тестирование WordPress с помощью Brain Monkey
Кто еще не знаком с тестированием и модульным тестированием можете ознакомится: Автоматизация тестирования, Модульное тестирование с помощью PHPUnit.
Как с помощью husky улучшить качество работы с Git?
Библиотека husky может предотвращать плохие git commit
, git push
и еще что-то).
Тестирование абстрактных методов
Объект абстрактного класса мы не можем создать напрямую. Поэтому работать с ним будем через stub
. Что такое stub
можно прочитать в статье про Модульное тестирование.
Вызов защищенных и приватных методов
Если вам понадобился данный трюк, то, скорее всего, вы имеете проблему в архитектуре вашего класса/приложения. Его использование — это крайняя мера.