Skip to main content

wp core install

Overview

Complete the WordPress installation non-interactively. Replaces the browser-based five-minute install wizard and makes site provisioning fully scriptable.

What It Does​

wp core install runs the WordPress database installation, creates all required tables, and creates the first admin user. It requires a working wp-config.php and an accessible database.

Syntax​

wp core install --url=<url> --title=<title> --admin_user=<user> --admin_password=<pass> --admin_email=<email> [OPTIONS]

Required Options​

FlagDescription
--url=URLFull site URL (e.g. https://example.com)
--title=TITLESite title
--admin_user=USERAdmin username
--admin_password=PASSAdmin password
--admin_email=EMAILAdmin email address

Optional Flags​

FlagDescription
--skip-emailDo not send the admin notification email
--locale=LOCALESet site language

Basic Usage​

Standard installation​

wp core install \
--url="https://example.com" \
--title="My WordPress Site" \
--admin_user="admin" \
--admin_password="Admin1234!" \
--admin_email="admin@example.com"

Skip notification email​

wp core install \
--url="https://example.com" \
--title="My Site" \
--admin_user="admin" \
--admin_password="Admin1234!" \
--admin_email="admin@example.com" \
--skip-email

Local development install​

wp core install \
--url="http://localhost" \
--title="Dev Site" \
--admin_user="admin" \
--admin_password="admin" \
--admin_email="dev@localhost" \
--skip-email

Expected Output​

Success: WordPress installed successfully.

If already installed:

Error: WordPress is already installed.

Prerequisites​

Before running wp core install, ensure:

  1. ✅ WordPress files are downloaded (wp core download)
  2. ✅ wp-config.php exists (wp config create)
  3. ✅ Database exists and is accessible (wp db create)
# Full setup sequence
wp core download
wp config create --dbname=mydb --dbuser=root --dbpass=secret
wp db create
wp core install \
--url="https://example.com" \
--title="My Site" \
--admin_user="admin" \
--admin_password="Admin1234!" \
--admin_email="admin@example.com" \
--skip-email

Real-World Scenarios​

Scenario 1: Automated provisioning script (environment variables)​

#!/bin/bash
wp core download --locale="${WP_LOCALE:-en_US}"
wp config create \
--dbname="${DB_NAME}" \
--dbuser="${DB_USER}" \
--dbpass="${DB_PASS}" \
--dbhost="${DB_HOST:-localhost}"
wp db create
wp core install \
--url="${SITE_URL}" \
--title="${SITE_TITLE}" \
--admin_user="${ADMIN_USER}" \
--admin_password="${ADMIN_PASS}" \
--admin_email="${ADMIN_EMAIL}" \
--skip-email
echo "Site ready at ${SITE_URL}"

Scenario 2: Docker entrypoint installation​

# check if already installed before running
if ! wp core is-installed 2>/dev/null; then
wp core install \
--url="http://localhost" \
--title="Docker Dev" \
--admin_user=admin \
--admin_password=admin \
--admin_email=admin@localhost \
--skip-email
fi

Scenario 3: Staging environment setup​

wp core install \
--url="https://staging.example.com" \
--title="Staging - Example" \
--admin_user=stagingadmin \
--admin_password="$(openssl rand -base64 16)" \
--admin_email=devteam@example.com \
--skip-email

Best Practices​

  1. Never use admin as username in production — it is a brute-force target.
  2. Use strong, randomly generated passwords — openssl rand -base64 24.
  3. Use --skip-email in automated scripts to avoid sending notification emails.
  4. Use environment variables for credentials — never hardcode in scripts.
  5. Verify with wp core is-installed before running to prevent re-installation errors.

Troubleshooting​

ProblemCauseFix
Error: WordPress is already installedSite already set upUse wp core is-installed to check first
Error: Database connection failedWrong credentials or DB not createdRun wp db create and check wp-config.php
Error: Unknown error installing WordPressTable conflict or corrupted DBwp db reset then re-run
Admin email arrives unexpectedly--skip-email not usedAdd --skip-email in automation

Quick Reference​

wp core install --url=https://example.com --title="My Site" \
--admin_user=admin --admin_password=Admin1234! --admin_email=admin@example.com

wp core install ... --skip-email # Skip notification
wp core is-installed && echo "Already up" # Check before installing

Next Steps​