Files
Easy-WP/README.md

91 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Easy WordPress Bootstrap
Spin up a complete WordPress development site on macOS with Laravel Herd and DBngin (or any MySQL/MariaDB server) in one pass. For the Windows/PowerShell workflow, see [`windows/README-Windows.md`](windows/README-Windows.md).
## What You Get
- Project directory under your Herd workspace with sanitized slug and host mapping.
- MySQL database + user created after verifying the supplied root credentials.
- Latest WordPress core, `wp-config.php` with fresh salts, permalinks set to `/%postname%/`, and Home/News pages.
- Plugin install/activation from `plugins.json`, resolved from the project folder first then the repository default.
- Starter theme cloned with shallow history, `.git` stripped, repo reinitialized, remote optionally set, and Composer/NPM build steps run when available.
- `.htaccess` seeded when Apache rewrites are missing, `bootstrap-summary.txt` written, and plugin install logs stored at `wp-content/plugin-bootstrap.log`.
- Automatic WP-CLI detection with a bundled `wp-cli.phar` fallback (`WP_CLI_PHAR` env/config override).
## Prerequisites
- macOS with [Laravel Herd](https://herd.laravel.com/) configured (default workspace `~/Herd`).
- MySQL or MariaDB available locally (DBngin recommended) and the `mysql` client in `PATH`.
- CLI tools: `php`, `git`, `curl`, `openssl`, `composer`, `npm`, `mysql`, and optionally `jq` for pretty plugin output.
- Either `wp` in `PATH` or a downloadable `wp-cli.phar` placed beside the script (or in `windows/wp-cli.phar`).
## Quick Start (Interactive)
1. Copy the sample configuration (one time):
```bash
cp wp-bootstraprc.example ~/.wp-bootstraprc
```
2. Review `plugins.json` (optional override per project; place your own copy in the project root if needed).
3. Make the script executable, then run it and answer prompts:
```bash
chmod +x wp-bootstrap.sh
./wp-bootstrap.sh
```
When the bootstrap completes, open the URL printed in the summary and check `bootstrap-summary.txt` under the project root.
## Non-Interactive Usage
Pass values via flags (help output lists every option):
```bash
./wp-bootstrap.sh \
--project-name "Client Site" \
--admin-user admin \
--admin-email dev@example.com \
--theme-starter-repo git@github.com:vendor/theme.git \
--herd-workspace "$HOME/Herd" \
--local-tld test \
--mysql-host 127.0.0.1 \
--mysql-port 3306 \
--mysql-root-user root \
--mysql-root-pass secret
```
Any value omitted from the CLI falls back to `~/.wp-bootstraprc` or the script defaults. Supply `--help` to print the full usage guide.
## Configuration with `.wp-bootstraprc`
The script sources `~/.wp-bootstraprc` on start. Key entries include:
- `HERD_WORKSPACE`, `LOCAL_TLD`
- `MYSQL_HOST`, `MYSQL_PORT`, `MYSQL_ROOT_USER`, `MYSQL_ROOT_PASS`
- `DEFAULT_ADMIN_USER`, `DEFAULT_ADMIN_EMAIL`
- `THEME_STARTER_REPO`, `DEFAULT_THEME_REMOTE_ORIGIN`
- `WP_CLI_PHAR` to point at a custom `wp-cli.phar`
Environment variables exported before running the script take precedence over both CLI flags and rc defaults when they share the same name.
## Plugin Manifest
`plugins.json` accepts WordPress.org slugs or zip URLs. The script first looks for `./plugins.json` inside the target project (useful for site-specific manifests) and falls back to the repository version when absent. Premium/private zips can point to signed URLs or local files; make sure the executing user has access.
## Logs & Files Created
- `bootstrap-summary.txt` high-level run output, stored in the project root.
- `wp-content/plugin-bootstrap.log` detailed plugin installation results.
- `.htaccess` created only when missing, populated with standard WordPress rewrite rules.
## Troubleshooting
- **WP-CLI missing** install `wp` globally, or download `wp-cli.phar` into the script directory and set `WP_CLI_PHAR=/path/to/wp-cli.phar`.
- **MySQL connection failures** confirm DBngin (or your server) is running, credentials match your `.wp-bootstraprc`, and the root user can create databases/users.
- **Composer/NPM not installed** the script skips dependency installation but leaves a warning in the output; install the tooling and rerun if theme assets are required.
- **Permissions** ensure the Herd workspace and MySQL socket/port are accessible to your user account.
---
DIY-first policy: keep `plugins.json` minimal; add heavier stacks only when a project truly needs them.