Agent Skills: WP-CLI and Ops

Use when working with WP-CLI for WordPress operations: safe search-replace, db export/import, plugin/theme management, cron, cache flushing, multisite, and automation with wp-cli.yml.

UncategorizedID: vapvarun/claude-backup/wp-wpcli-and-ops

Skill Files

Browse the full folder contents for wp-wpcli-and-ops.

Download Skill

Loading file tree…

skills/wp-wpcli-and-ops/SKILL.md

Skill Metadata

Name
wp-wpcli-and-ops
Description
"Use when working with WP-CLI for WordPress operations: safe search-replace, db export/import, plugin/theme management, cron, cache flushing, multisite, and automation with wp-cli.yml."

WP-CLI and Ops

When to use

Use this skill for WordPress operational work:

  • wp search-replace (URL changes, domain migrations)
  • DB export/import, resets, inspections (wp db *)
  • Plugin/theme install/activate/update
  • Cron event listing/running
  • Cache/rewrite flushing
  • Multisite operations (wp site *, --url, --network)
  • Building repeatable scripts (wp-cli.yml, shell scripts)

Inputs required

  • Environment (dev/staging/prod) and safety constraints
  • Site root path: --path=<wordpress-root>
  • Multisite: --url=<site-url> if applicable
  • Any restrictions (no writes, no plugin installs, maintenance window)

Procedure

0) Safety guardrails

WP-CLI commands can be destructive. Before any write operation:

  1. Confirm environment (dev/staging/prod)
  2. Confirm targeting (path/url)
  3. Make a backup for risky operations

1) Safe URL/domain migration

Step-by-step:

# 1. Backup database first
wp db export backup-$(date +%Y%m%d).sql --path=/path/to/wp

# 2. Dry run to review impact
wp search-replace 'old-domain.com' 'new-domain.com' --dry-run --path=/path/to/wp

# 3. Execute the replacement
wp search-replace 'old-domain.com' 'new-domain.com' --path=/path/to/wp

# 4. Flush caches and rewrites
wp cache flush --path=/path/to/wp
wp rewrite flush --path=/path/to/wp

Common flags:

| Flag | Purpose | |------|---------| | --dry-run | Preview changes without applying | | --precise | Exact match only | | --recurse-objects | Handle serialized data in objects | | --all-tables | Include non-WP tables | | --skip-columns=guid | Skip GUID column (recommended) |

2) Database operations

# Export
wp db export backup.sql

# Import
wp db import backup.sql

# Query
wp db query "SELECT ID, post_title FROM wp_posts LIMIT 5"

# Optimize
wp db optimize

# Reset (DESTRUCTIVE)
wp db reset --yes

3) Plugin/theme management

# List plugins
wp plugin list

# Install and activate
wp plugin install query-monitor --activate

# Deactivate
wp plugin deactivate plugin-name

# Update all
wp plugin update --all

# Same for themes
wp theme list
wp theme install theme-name --activate

4) Cron management

# List scheduled events
wp cron event list

# Run a specific event
wp cron event run my_event_hook

# Test cron is working
wp cron test

5) Cache operations

# Flush object cache
wp cache flush

# Flush transients
wp transient delete --all

# Flush rewrite rules
wp rewrite flush

6) Multisite operations

# List all sites
wp site list

# Run command on specific site
wp option get blogname --url=https://subsite.example.com

# Run command on all sites
wp site list --field=url | xargs -I {} wp option get blogname --url={}

# Network-wide plugin activation
wp plugin activate plugin-name --network

7) Automation with wp-cli.yml

Create wp-cli.yml in site root:

path: /path/to/wordpress
url: https://example.com
user: admin

# Environment-specific
@staging:
  url: https://staging.example.com

@production:
  url: https://example.com
  ssh: user@server/path/to/wordpress

Usage:

wp @staging plugin list
wp @production cache flush

Verification

  • Confirm intended side effects occurred
  • Check URLs are correct after search-replace
  • Verify plugins/themes in expected state
  • Run health check if available: wp doctor check

Failure modes / debugging

"Error: This does not seem to be a WordPress installation"

  • Wrong --path
  • Missing wp-config.php

Multisite commands affecting wrong site

  • Missing or wrong --url

Search-replace causing serialization issues

  • Use --precise flag
  • Don't replace with different length strings in serialized data without --recurse-objects

Escalation

  • If you cannot confirm environment safety, do not run write operations
  • For production changes, always backup first
  • Document all commands run for audit trail