---
name: wp-cli
description: Gestão WordPress via WP-CLI no servidor CWP. Cobre core, plugins, temas, base de dados, utilizadores, migração, search-replace e automação com suporte multi-PHP.
---

# /wp-cli - Gestão WordPress via WP-CLI no CWP

Operações WordPress via linha de comandos no servidor CWP (server.descomplicar.pt). Cobre core, plugins, temas, base de dados, utilizadores, migração e automação.

**Servidor:** server.descomplicar.pt (176.9.3.158) | porta SSH: 9443
**Fonte:** `Hub/06-Operacoes/Documentacao/Manuais/WP-CLI no CWP.md`
**NotebookLM:** [WordPress Config CLI](https://notebooklm.google.com/notebook/fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d)

---

## Contexto CWP — Regras Obrigatórias

```bash
# 1. Usar sempre --allow-root (CWP executa como root)
# 2. Especificar sempre --path= (não fazer cd)
# 3. Usar o PHP correcto para cada utilizador

# Formato base
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp COMANDO --allow-root --path=/home/USER/public_html

# Aliases ~/.bashrc (se configurados)
alias wp74='/opt/alt/php-fpm74/usr/bin/php /usr/local/bin/wp --allow-root'
alias wp82='/opt/alt/php-fpm82/usr/bin/php /usr/local/bin/wp --allow-root'
alias wp83='/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root'
```

### Versões PHP disponíveis

| Alias | PHP | Path |
|-------|-----|------|
| `wp74` | 7.4 | `/opt/alt/php-fpm74/usr/bin/php` |
| `wp80` | 8.0 | `/opt/alt/php-fpm80/usr/bin/php` |
| `wp81` | 8.1 | `/opt/alt/php-fpm81/usr/bin/php` |
| `wp82` | 8.2 | `/opt/alt/php-fpm82/usr/bin/php` |
| `wp83` | 8.3 | `/opt/alt/php-fpm83/usr/bin/php` |

### Detectar PHP activo de um utilizador

```bash
# Ver pool PHP-FPM do utilizador
ps aux | grep "php-fpm: pool USER" | grep -v grep | head -1

# Ou usar wp-auto.sh (auto-detect)
/root/wp-auto.sh --path=/home/USER/public_html plugin list
```

O script `wp-auto.sh` está em `scripts/wp-auto.sh` desta skill.

---

## Core WordPress

```bash
PATH=/home/USER/public_html

# Verificar versão
wp core version --allow-root --path=$PATH

# Actualizar WordPress
wp core update --allow-root --path=$PATH

# Verificar integridade dos ficheiros
wp core verify-checksums --allow-root --path=$PATH

# Instalar versão específica
wp core download --version=6.4.3 --force --allow-root --path=$PATH

# Informações ambiente
wp --info --allow-root --path=$PATH
```

---

## Plugins

```bash
# Listar todos os plugins
wp plugin list --allow-root --path=$PATH

# Listar plugins desactualizados
wp plugin list --update=available --format=table --allow-root --path=$PATH

# Actualizar todos os plugins
wp plugin update --all --allow-root --path=$PATH

# Instalar e activar
wp plugin install akismet --activate --allow-root --path=$PATH

# Activar / desactivar
wp plugin activate NOME --allow-root --path=$PATH
wp plugin deactivate NOME --allow-root --path=$PATH

# Remover plugin
wp plugin delete NOME --allow-root --path=$PATH

# Verificar integridade
wp plugin verify-checksums --all --allow-root --path=$PATH
```

---

## Temas

```bash
# Listar temas
wp theme list --allow-root --path=$PATH

# Instalar e activar
wp theme install hello-elementor --activate --allow-root --path=$PATH

# Actualizar todos os temas
wp theme update --all --allow-root --path=$PATH

# Activar tema
wp theme activate NOME --allow-root --path=$PATH
```

---

## Base de Dados

```bash
# Exportar (backup)
wp db export /home/USER/backup_$(date +%Y%m%d_%H%M).sql --allow-root --path=$PATH

# Importar (restaurar)
wp db import backup.sql --allow-root --path=$PATH

# Optimizar tabelas
wp db optimize --allow-root --path=$PATH

# Reparar tabelas corrompidas
wp db repair --allow-root --path=$PATH

# Query directa
wp db query "SELECT option_name, option_value FROM wp_options WHERE option_name='siteurl';" --allow-root --path=$PATH

# Tamanho tabelas
wp db query "SELECT table_name, ROUND((data_length+index_length)/1024/1024,2) AS MB FROM information_schema.tables WHERE table_schema=DATABASE() ORDER BY MB DESC LIMIT 20;" --allow-root --path=$PATH
```

---

## Migração de Site (Search-Replace)

```bash
# Preview (dry-run) — SEMPRE primeiro
wp search-replace 'https://old.com' 'https://new.com' --dry-run --allow-root --path=$PATH

# Executar após confirmar
wp search-replace 'https://old.com' 'https://new.com' --allow-root --path=$PATH

# Com relatório
wp search-replace 'old.com' 'new.com' --report --allow-root --path=$PATH

# Após migração: limpar cache e regenerar rewrite rules
wp cache flush --allow-root --path=$PATH
wp rewrite flush --allow-root --path=$PATH
```

---

## Utilizadores

```bash
# Listar utilizadores
wp user list --allow-root --path=$PATH

# Criar administrador
wp user create admin admin@site.pt --role=administrator --user_pass=SENHA --allow-root --path=$PATH

# Redefinir password
wp user update USERNAME --user_pass=NOVA_SENHA --allow-root --path=$PATH

# Adicionar papel a utilizador existente
wp user set-role USERNAME administrator --allow-root --path=$PATH

# Remover utilizador (transferindo conteúdo)
wp user delete USERNAME --reassign=1 --allow-root --path=$PATH

# Actualizar email admin
wp option update admin_email "novo@email.pt" --allow-root --path=$PATH
```

---

## Cache e Transientes

```bash
# Limpar object cache (Redis/Memcached)
wp cache flush --allow-root --path=$PATH

# Apagar todos os transientes
wp transient delete --all --allow-root --path=$PATH

# Regenerar rewrite rules
wp rewrite flush --allow-root --path=$PATH

# Sequência completa pós-alteração
wp cache flush --allow-root --path=$PATH && \
wp transient delete --all --allow-root --path=$PATH && \
wp rewrite flush --allow-root --path=$PATH
```

---

## Modo Manutenção

```bash
# Activar modo manutenção
wp maintenance-mode activate --allow-root --path=$PATH

# Verificar estado
wp maintenance-mode status --allow-root --path=$PATH

# Desactivar
wp maintenance-mode deactivate --allow-root --path=$PATH
```

---

## Cron WordPress

```bash
# Listar eventos cron
wp cron event list --allow-root --path=$PATH

# Executar evento manualmente
wp cron event run HOOK_NAME --allow-root --path=$PATH

# Ver schedules disponíveis
wp cron schedule list --allow-root --path=$PATH

# Apagar evento
wp cron event delete HOOK_NAME --allow-root --path=$PATH
```

---

## Operações em Massa (Todos os Sites)

```bash
# Encontrar todas as instalações WordPress
find /home -name wp-config.php -not -path "*/backup*" 2>/dev/null | while read config; do
    dir=$(dirname "$config")
    user=$(stat -c '%U' "$dir")
    echo "=== $user: $dir ==="
done

# Actualizar todos os sites (com PHP auto-detect)
find /home -name wp-config.php -not -path "*/backup*" 2>/dev/null | while read config; do
    dir=$(dirname "$config")
    user=$(stat -c '%U' "$dir")
    echo "--- Actualizando $user ---"
    php_fpm=$(ps aux | grep "php-fpm: pool ${user}" | grep -v grep | head -1 | grep -o 'php-fpm[0-9][0-9]' | head -1)
    php_ver=${php_fpm:-php-fpm82}
    /opt/alt/${php_ver}/usr/bin/php /usr/local/bin/wp core update --allow-root --path="$dir" 2>/dev/null
    /opt/alt/${php_ver}/usr/bin/php /usr/local/bin/wp plugin update --all --allow-root --path="$dir" 2>/dev/null
done
```

---

## Erros Comuns e Soluções

| Erro | Causa | Solução |
|------|-------|---------|
| `Operation not permitted` | Sem `--allow-root` | Adicionar `--allow-root` |
| `PHP Fatal error: memory`  | Limite memória | `define('WP_MEMORY_LIMIT','256M')` no wp-config.php |
| `max_execution_time exceeded` | Timeout em ops longas | `--exec-time=300` ou php.ini |
| `Error establishing database connection` | BD em baixo | `wp db check --allow-root` |
| `Warning: Could not get lock` | Outro processo activo | `wp cli cache clear --allow-root` |
| PHP version wrong | Site usa PHP diferente | `ps aux \| grep "pool USER"` para detectar |

---

## Diagnóstico Rápido

```bash
# Informações completas do ambiente
wp --info --allow-root --path=$PATH

# Verificar conectividade BD
wp db check --allow-root --path=$PATH

# Ver configuração PHP activa
wp eval 'echo PHP_VERSION."\n".php_ini_loaded_file()."\n".ini_get("memory_limit")."\n";' --allow-root --path=$PATH

# Ver URL e email admin
wp option get siteurl --allow-root --path=$PATH
wp option get admin_email --allow-root --path=$PATH

# Listar utilizadores admin
wp user list --role=administrator --allow-root --path=$PATH
```

---

## Recursos Adicionais

### Scripts

- **`scripts/wp-auto.sh`** — Auto-detecta PHP do utilizador e executa WP-CLI com a versão correcta

### Referências

- **`references/commands.md`** — Referência completa: todos os comandos com flags, WooCommerce CLI, options, wp eval avançado

### Documentação Hub

- **Manual:** `Hub/06-Operacoes/Documentacao/Manuais/WP-CLI no CWP.md`
- **NotebookLM:** [WordPress Config CLI](https://notebooklm.google.com/notebook/fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d)
- **Skill relacionada:** `/rank-math` — operações Rank Math SEO via WP-CLI

---

*WP-CLI no CWP | Descomplicar® | v1.0.0 | 18-02-2026*

---

## Healing Log

Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.

```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```

*Adicionar nova linha após cada erro corrigido.*
