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 passwordsopenssl 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