![Обложка к записи Wp-now — локальное коружение для WordPress](https://www.kobzarev.com/wp-content/uploads/2024/06/wordpress-playground.jpg)
Пакет wp-now упрощает процесс создания локальной среды WordPress.
- Быстрый запуск
- Требования
- Использование
- Технические детали
- Использование Blueprints
- Известные проблемы
- Сравнения
- Ссылки
Он использует автоматическое определение режима, чтобы обеспечить быстрый процесс настройки, независимо от того, работаете ли вы над плагином или целым сайтом. Вы можете легко переключаться между версиями PHP и WordPress с помощью флага конфигурации. Под капотом wp-now работает на базе WordPress Playground и требует только Node.js.
![](https://www.kobzarev.com/wp-content/uploads/2024/06/wp-now.gif)
Быстрый запуск
Запуск wp-now в каталоге плагинов или тем
Запустить wp-now очень просто: зайдите в каталог плагинов или тем и выполните следующую команду:
cd my-plugin-or-theme-directory npx @wp-now/wp-now start
Запуск wp-now в директории wp-content с помощью опций
Вы также можете запустить wp-now из любой папки wp-content. В этом примере вы передаете параметры для изменения версий PHP и WordPress и применения файла Blueprint.
cd my-wordpress-folder/wp-content npx @wp-now/wp-now start --wp=6.4 --php=8.0 --blueprint=path/to/blueprint-example.json
Требования
Минимальная поддерживаемая версия Node.js — 18. Для поддержки Blueprint установите Node 20.
Использование
![](https://www.kobzarev.com/wp-content/uploads/2024/06/wp-now-basics-diagram.png)
Вам не нужно устанавливать wp-now — вы можете запустить его с помощью одной команды npx
. Это рекомендуемый способ использования wp-now, который не требует установки или настройки:
npx @wp-now/wp-now start
Вы также можете установить @wp-now/wp-now
глобально, чтобы запускать его из любой директории:
npm install -g @wp-now/wp-now
После установки запустите новый сервер следующим образом:
cd wordpress-plugin-or-theme wp-now start
Обратите внимание на другой синтаксис. Хотя предшествующий
npx @wp-now/
не требуется после локальной установки пакета, без негоwp-now <command>
выдаст ошибку.
Используйте аргументы --php=<version>
и --wp=<version>
, чтобы переключаться на разные версии «на лету»:
npx @wp-now/wp-now start --wp=5.9 --php=7.4
В поддерживаемых режимах wp-now создает постоянную базу данных SQLite и каталог wp-content в ~/.wp-now.
Для создания нового проекта используйте аргумент --reset
.
Используйте wp-now php <file>
для выполнения определенного PHP-файла:
cd wordpress-plugin-or-theme npx @wp-now/wp-now php my-file.php
Автоматические режимы
wp-now работает в нескольких различных режимах для команд start
и php
. Выбранный режим зависит от директории, в которой вы выполняете команду:
- plugin, theme или wp-content: Загружает файлы проекта в виртуальную файловую систему с WordPress и базой данных на основе SQLite. Все (включая основные файлы WordPress, базу данных, wp-config.php и т. д.) хранится в домашней директории пользователя и загружается в виртуальную файловую систему (VFS). wp-now использует последнюю версию WordPress, если вы не зададите аргумент
--wp=<version>
.
Вот эвристика для каждого режима:- Режим plugin: Наличие PHP-файла с именем «Plugin Name:» в его содержимом.
- Режим theme: Наличие файла style.css с именем «Theme Name:» в его содержимом.
- Режим wp-content: Наличие подкаталогов plugins и themes.
- wordpress: Запускает каталог как установку WordPress при обнаружении файлов WordPress. Если он существует, wp-now будет использовать файл wp-config.php или создаст его с базой данных SQLite.
- wordpress-develop: То же самое, что и в режиме wordpress, за исключением того, что каталог сборки build является корнем сайта.
- index: При наличии файла index.php wp-now запускает веб-сервер PHP в рабочей директории и передает запросы в этот файл.
- playground: Если никакие другие условия не выполняются, wp-now запускает виртуализированный сайт WordPress.
Аргументы
Вы можете запустить wp-now с флагом --help
, чтобы получить обзор всех доступных опций.
npx @wp-now/wp-now --help # или npx @wp-now/wp-now start --help # или npx @wp-now/wp-now php --help
wp-now start
поддерживает следующие дополнительные аргументы:
--path=
: Путь к PHP-файлу или проекту WordPress, который необходимо использовать. Если не указано, будет использоваться текущий рабочий каталог.--php=
: Версия PHP для использования. По умолчанию используется версия 8.0.--port=
: номер порта, на котором будет прослушиваться сервер. По умолчанию используется порт 8881. Если он используется, wp-now выберет открытый номер порта.--wp=
: Версия WordPress, которую следует использовать. По умолчанию используется последняя версия WordPress.--blueprint=<path>
: путь к JSON-файлу с шагами Blueprint (требуется Node 20). Если он указан, wp-now выполнит эти шаги. Дополнительные сведения см. в разделе Использование Blueprints.--reset
: Создает свежую базу данных SQLite и каталог wp-content для режимов, поддерживающих персистентность.--skip-browser
: пропустить открытие браузера после запуска сервера.
wp-now php
поддерживает аргументы --path=<path>
и --php=<version>
.
Технические детали
wp-now хранит все необходимые файлы в скрытом каталоге в домашней директории пользователя: ~/.wp-now.
При работе в режимах plugin, theme, wp-content, и playground файлы ядра WordPress и wp-content будут доступны в ~/.wp-now/wp-content/${projectName}-${directoryHash}. Режим playground использует один и тот же каталог ~/.wp-now/wp-content/playground, независимо от того, где он запущен.
Для настройки базы данных wp-now использует плагин интеграции базы данных SQLite. Путь к базе данных — ~/.wp-now/wp-content/${projectName}-${directoryHash}/database/.ht.sqlite.
Использование Blueprints
Blueprints — это JSON-файлы, определяющие список шагов, которые необходимо выполнить после запуска wp-now. Blueprints автоматизируют настройку сайта WordPress, включая определение констант wp-config.php, установку плагинов и тем, а также создание контента.
Ниже приведен пример Blueprints, который запускает последние версии WordPress и PHP, устанавливает необходимые расширения PHP, регистрирует пользователя в качестве администратора и открывает экран создания новой записи.
{ "$schema": "https://playground.wordpress.net/blueprint-schema.json", "landingPage": "/wp-admin/post-new.php", "preferredVersions": { "php": "latest", "wp": "latest" }, "phpExtensionBundles": ["kitchen-sink"], "steps": [ { "step": "login", "username": "admin", "password": "password" } ] }
Вы можете создавать прототипы и тестировать свои Blueprints в специальном онлайн-редакторе.
Чтобы запустить его, создайте файл с именем blueprint-example.json и выполните следующую команду:
npx @wp-now/wp-now start --blueprint=path/to/blueprint-example.json
Определение пользовательских URL-адресов в Blueprints
Будучи строительными блоками Playground, Blueprints обладают расширенной функциональностью, и мы рекомендуем вам узнать больше о том, как их использовать, прежде чем приступать к работе.
Вот пример Blueprint, который определяет пользовательскую константу URL в wp-config.php с помощью WP_HOME
и WP_SITEURL
.
Если предположить, что вы добавили myurl.wpnow в файл hosts, ваш сайт будет доступен по адресу http://myurl.wpnow.
Обратите внимание, что method
установлен на define-before-run
, чтобы избежать модификации общего файла wp-config.php. Метод по умолчанию, rewrite-wp-config
, изменяет файл wp-config.php на диске.
{ "steps": [ { "step": "defineWpConfigConsts", "consts": { "WP_HOME": "http://myurl.wpnow:8881", "WP_SITEURL": "http://myurl.wpnow:8881" }, "method": "define-before-run" } ] }
Вы можете использовать этот экземпляр с помощью ngrok:
- Запустите
ngrok http 8881
- Скопируйте URL-адрес и
- Замените
WP_HOME
иWP_SITEURL
в файле Blueprint.
Вы также можете задать другой порт:
npx @wp-now/wp-now start --blueprint=path/to/blueprint-example.json --port=80
Blueprint для прослушивания порта 80 будет выглядеть следующим образом:
{ "steps": [ { "step": "defineWpConfigConsts", "consts": { "WP_HOME": "http://myurl.wpnow", "WP_SITEURL": "http://myurl.wpnow" }, "method": "define-before-run" } ] }
Определение отладочных констант в Blueprint
Аналогичным образом вы можете определить константы WP_DEBUG
и просмотреть журналы отладки.
Вот пример Blueprint:
{ "steps": [ { "step": "defineWpConfigConsts", "consts": { "WP_DEBUG": true } } ] }
Поскольку вы не определили метод для defineWpConfigConsts
, Blueprint использует стандартную команду rewrite-wp-config
и обновляет файл, хранящийся в ~/.wp-now/wordpress-versions/latest/wp-config.php. В следующий раз, когда вы выполните wp-now start
в любом проекте, переменная WP_DEBUG
будет установлена в true
.
Если вы откроете wp-config.php, то увидите следующие строки:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true );
Вы можете найти файл debug.log в директории ~/.wp-now/wp-content/${projectName}/.
Установка пользовательского пути для файла debug.log
Сервер php-wasm работает под VFS, где по умолчанию documentRoot
для wp-now всегда /var/www/html. Таким образом, Blueprint, запущенный из темы с именем atlas
, будет выглядеть следующим образом:
{ "steps": [ { "step": "defineWpConfigConsts", "consts": { "WP_DEBUG": true, "WP_DEBUG_LOG": "/var/www/html/wp-content/themes/atlas/example.log" }, "method": "define-before-run" } ] }
Вы можете найти файл example.log в каталоге вашего проекта.
Известные проблемы
- Запуск
wp-now start
в режиме wp-content или wordpress приводит к созданию пустых каталогов. - Может показаться, что пакет wp-now NPM имеет случайный номер версии.
Сравнения
Laravel Valet
Вот что вам нужно знать, если вы переходите с Laravel Valet:
- wp-now выполняет всю установку WordPress за вас. Просто выполните команду
wp-now start
. - wp-now работает на всех настольных платформах (Mac, Linux, Windows).
- wp-now не устанавливает для вас пользовательские домены.
- wp-now работает с темами и плагинами WordPress, даже если у вас не установлен WordPress.
- wp-now позволяет переключать версию WordPress с помощью команды
wp-now start --wp=<vesrion>
.
wp-env
Вот что вам нужно знать, если вы переходите с wp-env:
- wp-now поддерживает проекты, не относящиеся к WordPress.
- wp-now не требует Docker.
- wp-now не включает скрипты жизненного цикла.
Ваш вклад
Мы приветствуем вклад сообщества!
Вклад в код
Склонируйте репозиторий, установите зависимости, соберите проект и запустите wp-now в режиме предварительного просмотра:
git clone git@github.com:WordPress/playground-tools.git cd playground-tools npm install npm run build npx nx preview wp-now start
Добавление аргумента
--path=<path>
к команде выше — удобный способ протестировать wp-now в разных режимах.
Чтобы запустить модульные тесты, выполните следующую команду:
npx nx test wp-now
Ссылки
Development npm npx Playground WordPress wp-now