szepeviktor / composer-managed-wordpress

Install and manage WordPress with Composer 👨‍🚀
https://github.com/szepeviktor/wordpress-website-lifecycle
MIT License
25 stars 3 forks source link
composer install manage packagist wordpress wordpress-development wordpress-site

Composer managed WordPress

You may learn how I install WordPress. Almost everything will come from Composer packages, the rest is under version control (git).

Thus the repository of a WordPress installation should barely contain files.

Support my work

Please consider sponsoring me monthly if you use my packages in an agency.

Sponsor

Directory structure

Most of these files are excluded from this repository as they are installed by Composer!

vendor/
UPGRADE.md
composer.json
composer.lock
wp-cli.yml
public/─┬─index.php (modified)
        ├─wp-config.php
        ├─PROJECT_NAME/─┬─index.php
        │               ├─wp-load.php
        │               ├─wp-login.php
        │               ├─wp-admin/
        │               └─wp-includes/
        └─wp-content/

Package types

All other files - except public/wp-config.php - should be kept under version control.

Usage

  1. Run WordPress core, plugins and theme on PHP 7.4 (as of 2023)
  2. Change the directory name "project" in .gitignore, composer.json, public/index.php, wp-cli.yml
  3. Customize composer.json and create documents
  4. Create .env if you have purchased plugins
  5. Add MU plugins
  6. Set GitHub OAuth token if you develop a private theme or plugins composer config github-oauth.github.com "$YOUR_GITHUB_TOKEN"
  7. Create public/wp-config.php including WP_CONTENT_DIR and WP_CONTENT_URL pointing to public/wp-content, and loading vendor/autoload.php
  8. Set WP_ENVIRONMENT_TYPE environment variable (in PHP-FPM configuration or in public/wp-config.php)
  9. Issue composer update --no-dev
  10. Administer your WordPress installation with WP-CLI
    wp core install --title="WP" --admin_user="myname" --admin_email="user@example.com" --admin_password="12345"
    wp option update home "https://example.com"
    wp option update siteurl "https://example.com/project"

WordPress core installation

These are possible variations.

Packages provided by Roots point to wordpress.org ZIP files and git repositories.