feat: sync all plugins, skills, agents updates
New plugins: core-tools New skills: auto-expense, ticket-triage, design, security-check, aiktop-tasks, daily-digest, imap-triage, index-update, mindmap, notebooklm, proc-creator, tasks-overview, validate-component, perfex-module, report, calendar-manager New agents: design-critic, design-generator, design-lead, design-prompt-architect, design-researcher, compliance-auditor, metabase-analyst, gitea-integration-specialist Updated: all plugin configs, knowledge datasets, existing skills Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
332
wordpress/skills/wp-cli/SKILL.md
Normal file
332
wordpress/skills/wp-cli/SKILL.md
Normal file
@@ -0,0 +1,332 @@
|
||||
---
|
||||
name: wp-cli
|
||||
description: This skill should be used when the user asks to "wp-cli cwp", "gerir
|
||||
wordpress linha de comandos", "actualizar plugins wp-cli", "backup wordpress cli",
|
||||
"migrar site wordpress", "search replace wordpress", "criar utilizador wordpress cli",
|
||||
"wp-cli no servidor", "wp-cli allow-root", "comandos wordpress server",
|
||||
"actualizar wordpress servidor", "modo manutencao wordpress", "wp db export",
|
||||
"wp plugin update server", "wp core update cwp". WP-CLI management on CWP server
|
||||
(server.descomplicar.pt) with multi-PHP support.
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.0.0
|
||||
quality_score: 80
|
||||
user_invocable: true
|
||||
---
|
||||
|
||||
# /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*
|
||||
376
wordpress/skills/wp-cli/references/commands.md
Normal file
376
wordpress/skills/wp-cli/references/commands.md
Normal file
@@ -0,0 +1,376 @@
|
||||
# WP-CLI no CWP — Referência Completa de Comandos
|
||||
|
||||
**Servidor:** server.descomplicar.pt (176.9.3.158) | porta 9443
|
||||
**PHP padrão:** `/opt/alt/php-fpm83/usr/bin/php`
|
||||
|
||||
---
|
||||
|
||||
## Formato Base
|
||||
|
||||
```bash
|
||||
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp GRUPO SUBCOMANDO [FLAGS] --allow-root --path=/home/USER/public_html
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Core WordPress
|
||||
|
||||
```bash
|
||||
wp core version # Versão actual
|
||||
wp core update # Actualizar para latest
|
||||
wp core update --version=6.4.3 --force # Versão específica
|
||||
wp core download # Descarregar sem instalar
|
||||
wp core verify-checksums # Verificar integridade ficheiros
|
||||
wp core install --url=... --title=... \
|
||||
--admin_user=admin --admin_email=... # Instalar novo WordPress
|
||||
wp core is-installed # Verificar se está instalado
|
||||
wp core update-db # Actualizar base de dados após update
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Plugins
|
||||
|
||||
```bash
|
||||
wp plugin list # Listar todos
|
||||
wp plugin list --status=inactive # Só inactivos
|
||||
wp plugin list --update=available # Com updates disponíveis
|
||||
wp plugin install SLUG # Instalar
|
||||
wp plugin install SLUG --activate # Instalar e activar
|
||||
wp plugin install SLUG --version=X.X # Versão específica
|
||||
wp plugin activate SLUG # Activar
|
||||
wp plugin deactivate SLUG # Desactivar
|
||||
wp plugin deactivate --all # Desactivar todos (debug)
|
||||
wp plugin delete SLUG # Remover ficheiros
|
||||
wp plugin update SLUG # Actualizar plugin específico
|
||||
wp plugin update --all # Actualizar todos
|
||||
wp plugin update --all --dry-run # Preview de updates
|
||||
wp plugin verify-checksums SLUG # Verificar integridade
|
||||
wp plugin verify-checksums --all # Verificar todos
|
||||
wp plugin search TERMO # Pesquisar no repo WordPress.org
|
||||
wp plugin get SLUG # Info detalhada
|
||||
wp plugin path SLUG # Path do plugin no servidor
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Temas
|
||||
|
||||
```bash
|
||||
wp theme list # Listar todos
|
||||
wp theme install SLUG # Instalar
|
||||
wp theme install SLUG --activate # Instalar e activar
|
||||
wp theme activate SLUG # Activar tema
|
||||
wp theme update SLUG # Actualizar
|
||||
wp theme update --all # Actualizar todos
|
||||
wp theme delete SLUG # Remover
|
||||
wp theme get SLUG # Info detalhada
|
||||
wp theme is-active SLUG # Verificar se activo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Base de Dados
|
||||
|
||||
```bash
|
||||
wp db export /caminho/backup.sql # Exportar
|
||||
wp db export - | gzip > backup.sql.gz # Exportar comprimido
|
||||
wp db import backup.sql # Importar
|
||||
wp db optimize # Optimizar tabelas
|
||||
wp db repair # Reparar tabelas
|
||||
wp db check # Verificar integridade
|
||||
wp db size # Tamanho da BD
|
||||
wp db tables # Listar tabelas
|
||||
wp db prefix # Prefixo actual
|
||||
wp db query "SQL;" # Query directa
|
||||
wp db search "TERMO" # Pesquisar em toda a BD
|
||||
wp db clean --tables=revision # Limpar revisões
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Search-Replace (Migração)
|
||||
|
||||
```bash
|
||||
# SEMPRE fazer dry-run primeiro
|
||||
wp search-replace 'old.com' 'new.com' --dry-run
|
||||
|
||||
# Executar
|
||||
wp search-replace 'https://old.com' 'https://new.com'
|
||||
|
||||
# Só numa tabela
|
||||
wp search-replace 'old' 'new' wp_options wp_postmeta
|
||||
|
||||
# Com relatório detalhado
|
||||
wp search-replace 'old' 'new' --report-changed-only
|
||||
|
||||
# Sem serialization (mais rápido, menos seguro)
|
||||
wp search-replace 'old' 'new' --no-php
|
||||
|
||||
# Número de linhas por batch (para BDs grandes)
|
||||
wp search-replace 'old' 'new' --precise
|
||||
|
||||
# Skip tabelas específicas
|
||||
wp search-replace 'old' 'new' --skip-tables=wp_users
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Options WordPress
|
||||
|
||||
```bash
|
||||
wp option get NOME # Ler option
|
||||
wp option update NOME VALOR # Actualizar (simples)
|
||||
wp option patch update NOME SUBKEY VALOR # Actualizar sub-key (serialized)
|
||||
wp option pluck NOME SUBKEY # Ler sub-key
|
||||
wp option add NOME VALOR # Adicionar
|
||||
wp option delete NOME # Apagar
|
||||
wp option list # Listar todas
|
||||
wp option list --search='rank*' # Filtrar por nome
|
||||
wp option list --autoload=yes # Só com autoload
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Post Meta / User Meta / Term Meta
|
||||
|
||||
```bash
|
||||
# Post Meta
|
||||
wp post meta list POST_ID # Listar meta de um post
|
||||
wp post meta get POST_ID META_KEY # Ler valor
|
||||
wp post meta update POST_ID META_KEY VAL # Actualizar
|
||||
wp post meta add POST_ID META_KEY VAL # Adicionar
|
||||
wp post meta delete POST_ID META_KEY # Apagar
|
||||
|
||||
# Com formato JSON (para arrays/objects)
|
||||
wp post meta update POST_ID META_KEY '["val1","val2"]' --format=json
|
||||
|
||||
# Term Meta
|
||||
wp term meta list TERM_ID
|
||||
wp term meta get TERM_ID META_KEY
|
||||
wp term meta update TERM_ID META_KEY VAL
|
||||
|
||||
# User Meta
|
||||
wp user meta list USER_ID
|
||||
wp user meta get USER_ID META_KEY
|
||||
wp user meta update USER_ID META_KEY VAL
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Posts e Conteúdo
|
||||
|
||||
```bash
|
||||
wp post list # Listar posts
|
||||
wp post list --post_type=page # Só páginas
|
||||
wp post list --post_status=draft # Só rascunhos
|
||||
wp post get POST_ID # Info completa
|
||||
wp post create --post_type=post \
|
||||
--post_title="Título" \
|
||||
--post_status=publish # Criar post
|
||||
wp post update POST_ID --post_title="..." # Actualizar
|
||||
wp post delete POST_ID # Apagar (lixo)
|
||||
wp post delete POST_ID --force # Apagar definitivo
|
||||
wp post generate --count=10 # Gerar posts de teste
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Utilizadores
|
||||
|
||||
```bash
|
||||
wp user list # Listar todos
|
||||
wp user list --role=administrator # Filtrar por papel
|
||||
wp user get USER_ID # Info utilizador
|
||||
wp user get USERNAME --field=ID # Obter ID por username
|
||||
wp user create LOGIN EMAIL \
|
||||
--role=administrator \
|
||||
--user_pass=SENHA # Criar
|
||||
wp user update USER_ID --user_pass=SENHA # Alterar password
|
||||
wp user update USER_ID --user_email=... # Alterar email
|
||||
wp user set-role USER_ID administrator # Alterar papel
|
||||
wp user delete USER_ID --reassign=1 # Apagar, transferindo conteúdo
|
||||
wp user check-password USER_ID SENHA # Verificar password
|
||||
wp user reset-password USER_ID # Reset password (envia email)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cache e Transientes
|
||||
|
||||
```bash
|
||||
wp cache flush # Limpar object cache
|
||||
wp cache get KEY [GROUP] # Ler cache
|
||||
wp transient delete --all # Apagar todos transientes
|
||||
wp transient delete NOME # Apagar transiente específico
|
||||
wp transient get NOME # Ler transiente
|
||||
wp rewrite flush # Regenerar rewrite rules
|
||||
wp rewrite list # Listar rules actuais
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cron
|
||||
|
||||
```bash
|
||||
wp cron event list # Listar eventos agendados
|
||||
wp cron event run HOOK_NAME # Executar agora
|
||||
wp cron event delete HOOK_NAME # Apagar evento
|
||||
wp cron event schedule HOOK cron now # Agendar evento
|
||||
wp cron schedule list # Ver schedules disponíveis
|
||||
wp cron test # Testar se cron está funcional
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## wp eval — Execução PHP
|
||||
|
||||
```bash
|
||||
# Código PHP inline
|
||||
wp eval 'echo PHP_VERSION."\n";' --allow-root --path=$PATH
|
||||
|
||||
# Ficheiro PHP
|
||||
wp eval-file script.php --allow-root --path=$PATH
|
||||
|
||||
# Com parâmetros
|
||||
wp eval 'global $wpdb; echo $wpdb->prefix;' --allow-root --path=$PATH
|
||||
|
||||
# Ver constantes WordPress
|
||||
wp eval 'echo WP_CONTENT_DIR."\n"; echo ABSPATH;' --allow-root --path=$PATH
|
||||
|
||||
# Executar com utilizador específico
|
||||
wp eval 'echo get_current_user_id();' --user=1 --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Multisite
|
||||
|
||||
```bash
|
||||
wp site list # Listar sites
|
||||
wp site create --slug=subdomain # Criar site
|
||||
wp site activate ID # Activar
|
||||
wp site deactivate ID # Desactivar
|
||||
wp site delete ID # Apagar
|
||||
|
||||
# Executar comando em todos os sites
|
||||
wp site list --field=url | xargs -I {} wp --url={} plugin list --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## WooCommerce CLI
|
||||
|
||||
```bash
|
||||
wp wc product list # Listar produtos
|
||||
wp wc product get ID # Produto específico
|
||||
wp wc product create --name="Nome" \
|
||||
--regular_price="19.99" # Criar produto
|
||||
wp wc product update ID --regular_price="29.99" # Actualizar
|
||||
wp wc product delete ID # Apagar
|
||||
|
||||
wp wc order list # Listar encomendas
|
||||
wp wc order get ID # Encomenda específica
|
||||
wp wc order update ID --status=completed # Mudar estado
|
||||
|
||||
wp wc customer list # Listar clientes
|
||||
wp wc shipping_zone list # Zonas de entrega
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Segurança e Diagnóstico
|
||||
|
||||
```bash
|
||||
# Verificar integridade completa
|
||||
wp core verify-checksums --allow-root --path=$PATH
|
||||
wp plugin verify-checksums --all --allow-root --path=$PATH
|
||||
|
||||
# Configuração PHP activa
|
||||
wp eval 'echo PHP_VERSION."\n".php_ini_loaded_file()."\n";' --allow-root --path=$PATH
|
||||
wp eval 'echo ini_get("memory_limit")."\n".ini_get("max_execution_time");' --allow-root --path=$PATH
|
||||
|
||||
# Ver configuração WordPress
|
||||
wp option get siteurl --allow-root --path=$PATH
|
||||
wp option get blogname --allow-root --path=$PATH
|
||||
wp option get active_plugins --format=json --allow-root --path=$PATH
|
||||
|
||||
# Verificar se WP_DEBUG activo
|
||||
wp eval 'echo WP_DEBUG ? "DEBUG ON" : "DEBUG OFF";' --allow-root --path=$PATH
|
||||
|
||||
# Listar ficheiros modificados recentemente (possível hack)
|
||||
find /home/USER/public_html -name "*.php" -newer /home/USER/public_html/wp-config.php -not -path "*/wp-content/cache/*" 2>/dev/null | head -20
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Scripts de Manutenção
|
||||
|
||||
### Backup completo de um site
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
PATH_WP="/home/USER/public_html"
|
||||
BACKUP_DIR="/media/ealmeida/Dados/GDrive/Backups/WP"
|
||||
DATE=$(date +%Y%m%d_%H%M)
|
||||
SITE=$(basename $(dirname $PATH_WP))
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# Backup BD
|
||||
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp db export \
|
||||
"$BACKUP_DIR/${SITE}_db_${DATE}.sql" \
|
||||
--allow-root --path=$PATH_WP
|
||||
|
||||
# Backup ficheiros
|
||||
tar -czf "$BACKUP_DIR/${SITE}_files_${DATE}.tar.gz" \
|
||||
-C $(dirname $PATH_WP) public_html \
|
||||
--exclude="public_html/wp-content/cache"
|
||||
|
||||
echo "Backup completo: $BACKUP_DIR"
|
||||
```
|
||||
|
||||
### Manutenção semanal (todos os sites)
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
find /home -name wp-config.php -not -path "*/backup*" 2>/dev/null | while read config; do
|
||||
dir=$(dirname "$config")
|
||||
user=$(stat -c '%U' "$dir")
|
||||
|
||||
# Detectar PHP do utilizador
|
||||
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}
|
||||
php_bin="/opt/alt/${php_ver}/usr/bin/php"
|
||||
|
||||
echo "=== $user ($dir) — PHP $php_ver ==="
|
||||
|
||||
$php_bin /usr/local/bin/wp core update --allow-root --path="$dir" 2>/dev/null
|
||||
$php_bin /usr/local/bin/wp plugin update --all --allow-root --path="$dir" 2>/dev/null
|
||||
$php_bin /usr/local/bin/wp theme update --all --allow-root --path="$dir" 2>/dev/null
|
||||
$php_bin /usr/local/bin/wp db optimize --allow-root --path="$dir" 2>/dev/null
|
||||
$php_bin /usr/local/bin/wp cache flush --allow-root --path="$dir" 2>/dev/null
|
||||
done
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Flags Globais Úteis
|
||||
|
||||
| Flag | Descrição |
|
||||
|------|-----------|
|
||||
| `--allow-root` | Obrigatório no CWP (executa como root) |
|
||||
| `--path=/home/USER/public_html` | Caminho da instalação WordPress |
|
||||
| `--url=https://site.pt` | URL do site (importante em multisite) |
|
||||
| `--user=1` | Executar como utilizador WordPress específico |
|
||||
| `--format=json\|table\|csv\|ids` | Formato do output |
|
||||
| `--fields=ID,name` | Campos a mostrar |
|
||||
| `--debug` | Output de debug detalhado |
|
||||
| `--quiet` | Sem output (para scripts) |
|
||||
| `--dry-run` | Preview sem executar (onde disponível) |
|
||||
| `--skip-plugins` | Não carregar plugins (troubleshooting) |
|
||||
| `--skip-themes` | Não carregar temas |
|
||||
|
||||
---
|
||||
|
||||
*WP-CLI CWP — Referência Completa | Descomplicar® | v1.0.0 | 18-02-2026*
|
||||
34
wordpress/skills/wp-cli/scripts/wp-auto.sh
Executable file
34
wordpress/skills/wp-cli/scripts/wp-auto.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
# wp-auto.sh — WP-CLI com detecção automática de PHP no CWP
|
||||
# Uso: /root/wp-auto.sh --path=/home/USER/public_html [comando wp-cli]
|
||||
# Exemplo: /root/wp-auto.sh --path=/home/site/public_html plugin list
|
||||
|
||||
# Pegar utilizador do directório de trabalho
|
||||
if [[ "$*" == *"--path="* ]]; then
|
||||
WP_PATH=$(echo "$@" | grep -o '\-\-path=[^ ]*' | cut -d= -f2)
|
||||
else
|
||||
WP_PATH=$(pwd)
|
||||
fi
|
||||
|
||||
USER=$(stat -c '%U' "$WP_PATH" 2>/dev/null || echo "nobody")
|
||||
|
||||
# Encontrar versão PHP-FPM activa para este utilizador
|
||||
PHP_FPM_PROCESS=$(ps aux | grep "php-fpm: pool ${USER}" | grep -v grep | head -n 1)
|
||||
PHP_VERSION=$(echo "$PHP_FPM_PROCESS" | grep -o 'php-fpm[0-9][0-9]' | grep -o '[0-9][0-9]' | head -1)
|
||||
|
||||
if [ -z "$PHP_VERSION" ]; then
|
||||
echo "⚠ Usando PHP 8.2 (padrão — pool ${USER} não encontrado)" >&2
|
||||
PHP_PATH="/opt/alt/php-fpm82/usr/bin/php"
|
||||
else
|
||||
PHP_PATH="/opt/alt/php-fpm${PHP_VERSION}/usr/bin/php"
|
||||
echo "ℹ PHP ${PHP_VERSION} detectado para utilizador ${USER}" >&2
|
||||
fi
|
||||
|
||||
# Verificar se o PHP existe
|
||||
if [ ! -f "$PHP_PATH" ]; then
|
||||
echo "❌ PHP não encontrado: $PHP_PATH — usando PHP 8.3" >&2
|
||||
PHP_PATH="/opt/alt/php-fpm83/usr/bin/php"
|
||||
fi
|
||||
|
||||
# Executar WP-CLI
|
||||
exec "$PHP_PATH" /usr/local/bin/wp --allow-root "$@"
|
||||
Reference in New Issue
Block a user