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:
2026-03-05 17:16:15 +00:00
parent f2b5171ea2
commit 9404af7ac9
184 changed files with 20865 additions and 1993 deletions

View File

@@ -0,0 +1,271 @@
---
name: woocommerce-cli
description: This skill should be used when the user asks to "gerir woocommerce linha de
comandos", "woocommerce wp-cli", "criar produto woocommerce cli", "actualizar stock
woocommerce cli", "gerir encomendas woocommerce cli", "importar produtos woocommerce",
"exportar produtos woocommerce", "configurar shipping woocommerce cli", "payment gateway
woocommerce cli", "limpar cache woocommerce cli", "bulk update woocommerce", "woocommerce
cwp", "wc cli cwp", "wp wc product", "wp wc shop_order", "configurar woocommerce servidor",
"scripting woocommerce", "automacao woocommerce cli". WooCommerce management via WP-CLI
on CWP server (server.descomplicar.pt) covering products, orders, customers, shipping,
payments, and automation.
author: Descomplicar® Crescimento Digital
version: 1.0.0
quality_score: 80
user_invocable: true
---
# /woocommerce-cli — WooCommerce via WP-CLI no CWP
Gestão completa de lojas WooCommerce via linha de comandos no servidor CWP. Cobre produtos, encomendas, clientes, configuração, automação e scripting.
**Servidor:** server.descomplicar.pt (176.9.3.158) | porta SSH: 9443
**Manual:** `Hub/06-Operacoes/Documentacao/Manuais/WooCommerce com WP-CLI_ Guia Completo.md`
**Skill relacionada:** `/woocommerce` — desenvolvimento e extensões WooCommerce
---
## Contexto CWP — Regras Obrigatórias
```bash
# 1. SEMPRE prefixar com PHP completo
# 2. SEMPRE --allow-root (CWP executa como root)
# 3. SEMPRE --user=1 em operações de escrita (mapeamento REST API)
# 4. SEMPRE --path= (múltiplos sites no mesmo servidor)
# Formato base
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc <ENTIDADE> <OP> \
--user=1 --allow-root --path=/home/USER/public_html
# Variável de conveniência para scripts
PATH_WP="/home/USER/public_html"
WP="/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=$PATH_WP"
$WP wc product list --user=1
```
### Versões PHP disponíveis
| Alias | PHP | Path |
|-------|-----|------|
| `wp74` | 7.4 | `/opt/alt/php-fpm74/usr/bin/php` |
| `wp82` | 8.2 | `/opt/alt/php-fpm82/usr/bin/php` |
| `wp83` | 8.3 | `/opt/alt/php-fpm83/usr/bin/php` (recomendado) |
### Parâmetros essenciais WC CLI
| Parâmetro | Uso |
|-----------|-----|
| `--user=1` | Obrigatório em escrita (autenticação REST API) |
| `--porcelain` | Retorna apenas ID numérico (para scripts) |
| `--format=table\|json\|csv\|ids` | Formato do output |
| `--fields=id,name,price` | Limitar campos (reduz memória) |
| `--per_page=100` | Limite máximo da API (paginar para mais) |
| `--force` | Eliminar definitivamente (sem lixo) |
---
## Produtos
### Operações Comuns
```bash
PATH_WP="/home/USER/public_html"
# Listar produtos
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product list \
--user=1 --fields=id,name,price,stock_quantity --format=table \
--allow-root --path=$PATH_WP
# Criar produto simples
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product create \
--user=1 \
--name="Produto Exemplo" \
--type=simple \
--regular_price="29.99" \
--sku="PROD-001" \
--manage_stock=true \
--stock_quantity=100 \
--status=publish \
--allow-root --path=$PATH_WP
# Actualizar preço e stock
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product update 456 \
--user=1 \
--regular_price="34.99" \
--stock_quantity=50 \
--allow-root --path=$PATH_WP
# Eliminar definitivamente
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product delete 456 \
--user=1 --force --allow-root --path=$PATH_WP
```
### Produto Variável (capturar ID)
```bash
# 1. Criar produto pai (--porcelain retorna só o ID)
PARENT_ID=$(/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product create \
--user=1 --name="T-Shirt" --type=variable \
--attributes='[{"name":"Tamanho","variation":true,"visible":true,"options":["S","M","L","XL"]}]' \
--porcelain --allow-root --path=$PATH_WP)
# 2. Criar variação
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product_variation create $PARENT_ID \
--user=1 \
--regular_price="24.99" \
--sku="TSHIRT-M" \
--attributes='[{"name":"Tamanho","option":"M"}]' \
--manage_stock=true --stock_quantity=30 \
--allow-root --path=$PATH_WP
```
### Actualização em Massa por SKU
```bash
#!/bin/bash
PATH_WP="/home/USER/public_html"
WP="/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=$PATH_WP"
IDS=$($WP wc product list --user=1 --sku="TSHIRT-*" --format=ids)
for ID in $IDS; do
$WP wc product update $ID --user=1 --stock_quantity=200 --porcelain
done
```
### Exportar Catálogo
```bash
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product list \
--user=1 --per_page=5000 --format=csv \
--allow-root --path=$PATH_WP \
> /home/USER/catalogo_$(date +%Y%m%d).csv
```
---
## Encomendas
```bash
PATH_WP="/home/USER/public_html"
# Listar encomendas em processamento
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shop_order list \
--user=1 --status=processing \
--fields=id,total,date_created \
--allow-root --path=$PATH_WP
# Actualizar estado
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shop_order update 355 \
--user=1 --status=completed \
--allow-root --path=$PATH_WP
# Adicionar nota ao cliente
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc order_note create 355 \
--user=1 \
--note="Encomenda expedida. Rastreio: PT-99887766." \
--customer_note=true \
--allow-root --path=$PATH_WP
# Conclusão massiva de todas as encomendas em processamento
WP="/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=$PATH_WP"
for ID in $($WP wc shop_order list --user=1 --status=processing --format=ids); do
$WP wc shop_order update $ID --user=1 --status=completed --porcelain
done
```
---
## Clientes
```bash
# Listar clientes com métricas
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc customer list \
--user=1 --fields=id,email,orders_count,total_spent \
--format=table --allow-root --path=$PATH_WP
# Criar cliente
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc customer create \
--user=1 \
--email="cliente@exemplo.pt" \
--first_name="João" \
--last_name="Silva" \
--billing='{"address_1":"Rua X","city":"Lisboa","postcode":"1000-001","country":"PT"}' \
--allow-root --path=$PATH_WP
```
---
## Configurações da Loja
```bash
PATH_WP="/home/USER/public_html"
# Listar ferramentas disponíveis
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc tool list \
--user=1 --fields=id,name --allow-root --path=$PATH_WP
# Sequência de limpeza pós-alterações (executar sempre após mudanças)
WP="/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=$PATH_WP"
$WP wc tool run clear_transients --user=1 # Limpar transients WC
$WP wc tool run recount_terms --user=1 # Recalcular contadores
$WP wc tool run delete_orphaned_variations --user=1 # Variações órfãs
$WP cache flush # Object cache
$WP rewrite flush # Rewrite rules
# Listar payment gateways
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc payment_gateway list \
--user=1 --fields=id,title,enabled --allow-root --path=$PATH_WP
# Desactivar gateway (emergência)
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc payment_gateway update paypal \
--user=1 --enabled=false --allow-root --path=$PATH_WP
```
---
## Cron do Sistema (CWP)
Desactivar WP-Cron virtual — adicionar em `wp-config.php`:
```php
define('DISABLE_WP_CRON', true);
```
Configurar cron real (`crontab -e` como root):
```bash
* * * * * /opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp cron event run --due-now --quiet --allow-root --path=/home/USER/public_html > /dev/null 2>&1
```
---
## Erros Comuns
| Erro | Causa | Solução |
|------|-------|---------|
| `Error: This does not appear to be a WooCommerce installation` | WooCommerce inactivo | `wp plugin activate woocommerce` |
| `Error: Sorry, you cannot list resources` | Falta `--user=` | Adicionar `--user=1` |
| `PHP Fatal error: memory` | Catálogo grande | Adicionar `-d memory_limit=2G` antes de `/usr/local/bin/wp` |
| `wp wc update` não actualiza BD | Bug conhecido | `wp option update woocommerce_db_version "X.X.X"` manual |
| Wizard de onboarding bloqueia | Sem comando CLI | `wp option update woocommerce_task_list_hidden "yes"` |
---
## Recursos Adicionais
### Referência Completa
- **`references/commands.md`** — Todos os tipos de produto (variável, externo, agrupado, virtual, downloadable), shipping zones completo, tributação, cupões, WP All Import, scripts de automação
### Manual Hub
- **`Hub/06-Operacoes/Documentacao/Manuais/WooCommerce com WP-CLI_ Guia Completo.md`** — Guia completo adaptado para CWP (v2.0)
### Skills Relacionadas
- **`/woocommerce`** — Desenvolvimento WooCommerce (PHP, hooks, extensões)
- **`/wp-cli`** — WP-CLI geral no CWP (core, plugins, temas, BD)
---
*WooCommerce CLI no CWP | Descomplicar® | v1.0.0 | 18-02-2026*

View File

@@ -0,0 +1,621 @@
# WooCommerce WP-CLI — Referência Completa (CWP)
**Manual Hub:** `06-Operacoes/Documentacao/Manuais/WooCommerce com WP-CLI_ Guia Completo.md`
---
## Namespace e Entidades Disponíveis
O WooCommerce CLI opera sob `wp wc`. Todas as operações mapeiam para REST API v3.
| Entidade | Comando Base |
|----------|-------------|
| `customer` | Contas, moradas, métricas |
| `product` | Inventário, preços, stock |
| `product_cat` / `product_tag` | Categorias e tags |
| `product_attribute` | Atributos globais |
| `product_variation` | Variações de produto variável |
| `shop_order` | Encomendas |
| `order_note` | Notas de encomenda |
| `shop_coupon` | Cupões de desconto |
| `setting` | Settings WooCommerce |
| `shipping_zone` | Zonas de envio |
| `shipping_zone_location` | Localizações por zona |
| `shipping_zone_method` | Métodos por zona |
| `payment_gateway` | Gateways de pagamento |
| `tax` | Taxas de imposto |
| `tax_class` | Classes de imposto |
| `tool` | Ferramentas de manutenção |
| `webhook` | Webhooks server-to-server |
---
## Tipos de Produto — Exemplos Completos
### Produto Simples
```bash
PATH_WP="/home/USER/public_html"
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product create \
--user=1 \
--name="T-Shirt Premium Algodão Orgânico" \
--type=simple \
--regular_price="29.99" \
--sale_price="24.99" \
--sku="TSHIRT-PREM-001" \
--manage_stock=true \
--stock_quantity=150 \
--status=publish \
--description="Descrição completa do produto." \
--short_description="Descrição curta para listagens." \
--allow-root --path=$PATH_WP
```
### Produto Virtual (sem envio)
```bash
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product create \
--user=1 \
--name="Consulta Online 1h" \
--type=simple \
--virtual=true \
--regular_price="75.00" \
--sku="CONSULT-1H" \
--status=publish \
--allow-root --path=$PATH_WP
```
### Produto Downloadable
```bash
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product create \
--user=1 \
--name="eBook Guia SEO 2026" \
--type=simple \
--virtual=true \
--downloadable=true \
--regular_price="19.90" \
--sku="EBOOK-SEO-2026" \
--downloads='[{"name":"eBook SEO 2026","file":"https://site.pt/ficheiros/ebook-seo-2026.pdf"}]' \
--download_limit=3 \
--download_expiry=365 \
--allow-root --path=$PATH_WP
```
### Produto Externo/Afiliado
```bash
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product create \
--user=1 \
--name="Software Cloud Parceiro" \
--type=external \
--regular_price="99.00" \
--product_url="https://parceiro.com/checkout/123" \
--button_text="Comprar na Loja do Parceiro" \
--sku="EXT-SOFT-123" \
--allow-root --path=$PATH_WP
```
### Produto Agrupado (Grouped)
```bash
# 1. Criar produto pai agrupado
GROUP_ID=$(/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product create \
--user=1 --name="Pack Bundle Completo" --type=grouped --sku="PACK-BUNDLE-001" \
--porcelain --allow-root --path=$PATH_WP)
# 2. Criar filho vinculado ao grupo
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product create \
--user=1 \
--name="Item A do Pack" \
--type=simple \
--regular_price="15.00" \
--sku="PACK-ITEM-A" \
--parent_id=$GROUP_ID \
--allow-root --path=$PATH_WP
```
### Produto Variável com Variações
```bash
# 1. Criar produto pai variável
PARENT_ID=$(/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product create \
--user=1 \
--name="Sapatilhas Running" \
--type=variable \
--attributes='[{"name":"Tamanho","variation":true,"visible":true,"options":["39","40","41","42","43"]},{"name":"Cor","variation":true,"visible":true,"options":["Preto","Branco"]}]' \
--porcelain --allow-root --path=$PATH_WP)
# 2. Criar variação (Tamanho 40, Cor Preto)
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product_variation create $PARENT_ID \
--user=1 \
--regular_price="89.99" \
--sku="RUN-40-PT" \
--attributes='[{"name":"Tamanho","option":"40"},{"name":"Cor","option":"Preto"}]' \
--manage_stock=true \
--stock_quantity=25 \
--allow-root --path=$PATH_WP
```
### Produto com Categorias e Atributos Visíveis
```bash
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product create \
--user=1 \
--name="Casaco Impermeável Inverno" \
--type=simple \
--regular_price="120.00" \
--categories='[{"id":15},{"id":22}]' \
--attributes='[{"name":"Material","visible":true,"options":["Poliéster","Gore-Tex"]},{"name":"Cor","visible":true,"options":["Preto","Azul Marinho"]}]' \
--allow-root --path=$PATH_WP
```
---
## Gestão de Stock
```bash
PATH_WP="/home/USER/public_html"
# Actualizar stock de produto único
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product update 456 \
--user=1 \
--manage_stock=true \
--stock_quantity=75 \
--stock_status=instock \
--allow-root --path=$PATH_WP
# Colocar produto fora de stock (sem alterar quantidade)
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product update 456 \
--user=1 --stock_status=outofstock \
--allow-root --path=$PATH_WP
# Actualizar stock em massa por prefixo SKU
WP="/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=$PATH_WP"
for ID in $($WP wc product list --user=1 --sku="TSHIRT-*" --format=ids); do
$WP wc product update $ID --user=1 --stock_quantity=200 --porcelain
done
```
---
## Gestão de Encomendas
### Consulta e Filtros
```bash
PATH_WP="/home/USER/public_html"
# Encomendas por estado
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shop_order list \
--user=1 --status=processing \
--fields=id,total,currency,date_created \
--format=table \
--allow-root --path=$PATH_WP
# Estados disponíveis: pending, processing, on-hold, completed, cancelled, refunded, failed
```
### Actualizar Estado
```bash
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shop_order update 355 \
--user=1 --status=completed \
--allow-root --path=$PATH_WP
```
### Adicionar Nota (Visível ao Cliente)
```bash
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc order_note create 355 \
--user=1 \
--note="Expedido via CTT. Rastreio: PT-99887766." \
--customer_note=true \
--allow-root --path=$PATH_WP
```
### Conclusão Massiva com Relatório
```bash
#!/bin/bash
PATH_WP="/home/USER/public_html"
WP="/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=$PATH_WP"
ORDER_IDS=$($WP wc shop_order list --user=1 --status=processing --format=ids)
TOTAL=0
for ID in $ORDER_IDS; do
$WP wc shop_order update $ID --user=1 --status=completed --porcelain
TOTAL=$((TOTAL+1))
echo "[OK] Encomenda #$ID concluída."
done
echo "Total processado: $TOTAL encomendas."
```
---
## Clientes
```bash
PATH_WP="/home/USER/public_html"
# Listar com métricas de lifetime value
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc customer list \
--user=1 \
--role=customer \
--fields=id,email,orders_count,total_spent \
--format=table \
--allow-root --path=$PATH_WP
# Criar cliente completo (B2B)
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc customer create \
--user=1 \
--email="empresa@exemplo.pt" \
--first_name="Carlos" \
--last_name="Mendes" \
--username="carlosmendes_b2b" \
--password="SenhaForte!2026" \
--billing='{"first_name":"Carlos","last_name":"Mendes","company":"Empresa Lda","address_1":"Avenida da Liberdade 123","city":"Lisboa","postcode":"1250-140","country":"PT"}' \
--shipping='{"first_name":"Carlos","last_name":"Mendes","company":"Armazém Empresa","address_1":"Rua da Indústria 45","city":"Sintra","postcode":"2710-000","country":"PT"}' \
--allow-root --path=$PATH_WP
```
---
## Shipping Zones — Configuração Completa
```bash
PATH_WP="/home/USER/public_html"
# 1. Criar zona geográfica
ZONE_ID=$(/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shipping_zone create \
--user=1 --name="Portugal Continental" \
--porcelain --allow-root --path=$PATH_WP)
# 2. Adicionar países à zona
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shipping_zone_location create $ZONE_ID \
--user=1 --code="PT" --type=country \
--allow-root --path=$PATH_WP
# 3. Adicionar método de portes fixos
METHOD_ID=$(/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shipping_zone_method create $ZONE_ID \
--user=1 --method_id=flat_rate \
--porcelain --allow-root --path=$PATH_WP)
# 4. Definir custo
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shipping_zone_method update $ZONE_ID $METHOD_ID \
--user=1 --settings='{"cost":"3.99","title":"Portes Padrão"}' \
--allow-root --path=$PATH_WP
# 5. Adicionar envio gratuito acima de X€
FREE_ID=$(/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shipping_zone_method create $ZONE_ID \
--user=1 --method_id=free_shipping \
--porcelain --allow-root --path=$PATH_WP)
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shipping_zone_method update $ZONE_ID $FREE_ID \
--user=1 --settings='{"requires":"min_amount","min_amount":"50"}' \
--allow-root --path=$PATH_WP
# Listar todas as zonas
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shipping_zone list \
--user=1 --format=table --allow-root --path=$PATH_WP
```
---
## Payment Gateways
```bash
PATH_WP="/home/USER/public_html"
# Listar todos os gateways
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc payment_gateway list \
--user=1 --fields=id,title,enabled --allow-root --path=$PATH_WP
# Activar gateway
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc payment_gateway update bacs \
--user=1 --enabled=true --allow-root --path=$PATH_WP
# Desactivar gateway (emergência)
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc payment_gateway update paypal \
--user=1 --enabled=false --allow-root --path=$PATH_WP
# Configurar Stripe em modo teste
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc payment_gateway update stripe \
--user=1 \
--settings='{"testmode":"yes","test_publishable_key":"pk_test_XXXX","test_secret_key":"sk_test_XXXX"}' \
--allow-root --path=$PATH_WP
```
---
## Tributação
```bash
PATH_WP="/home/USER/public_html"
# Criar taxa IVA 23% (Portugal)
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc tax create \
--user=1 \
--country=PT \
--rate="23" \
--name="IVA 23%" \
--class=standard \
--allow-root --path=$PATH_WP
# Criar taxa reduzida 6%
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc tax create \
--user=1 --country=PT --rate="6" --name="IVA 6%" --class=reduced-rate \
--allow-root --path=$PATH_WP
# Criar classe de taxa personalizada
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc tax_class create \
--user=1 --name="Taxa Super Reduzida" \
--allow-root --path=$PATH_WP
# Activar cálculo de impostos
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_calc_taxes "yes" \
--allow-root --path=$PATH_WP
```
---
## Cupões
```bash
PATH_WP="/home/USER/public_html"
# Criar cupão de desconto percentual
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shop_coupon create \
--user=1 \
--code="VERAO2026" \
--discount_type=percent \
--amount="15" \
--usage_limit=500 \
--expiry_date="2026-09-30" \
--allow-root --path=$PATH_WP
# Criar cupão de desconto fixo
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shop_coupon create \
--user=1 \
--code="DESCONTO10" \
--discount_type=fixed_cart \
--amount="10" \
--minimum_amount="50" \
--allow-root --path=$PATH_WP
# Listar cupões activos
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc shop_coupon list \
--user=1 --fields=id,code,amount,discount_type,usage_count \
--format=table --allow-root --path=$PATH_WP
```
---
## Ferramentas de Manutenção
```bash
PATH_WP="/home/USER/public_html"
WP="/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=$PATH_WP"
# Listar todas as ferramentas
$WP wc tool list --user=1 --fields=id,name,description --format=table
# Limpar transients
$WP wc tool run clear_transients --user=1
# Recalcular contadores de taxonomias (categorias/tags)
$WP wc tool run recount_terms --user=1
# Eliminar variações órfãs
$WP wc tool run delete_orphaned_variations --user=1
# Limpar sessões e carrinhos abandonados
$WP wc tool run clear_sessions --user=1
# Regenerar imagens de produto
$WP wc tool run regenerate_thumbnails --user=1
# Regenerar dados de lookup (tabela de relatórios)
$WP wc tool run clear_lookup_table --user=1
# Sequência completa de limpeza (recomendada após alterações massivas)
$WP wc tool run delete_orphaned_variations --user=1
$WP wc tool run recount_terms --user=1
$WP wc tool run clear_sessions --user=1
$WP wc tool run clear_transients --user=1
$WP cache flush
$WP rewrite flush
echo "Limpeza concluída."
```
---
## WP All Import — Importação Massiva
```bash
PATH_WP="/home/USER/public_html"
# Verificar se plugin está activo
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp plugin is-active wp-all-import-pro \
--allow-root --path=$PATH_WP && echo "Activo" || echo "Inactivo"
# Executar perfil de importação pré-configurado (ID=5)
# Configurar mapeamentos no painel WP All Import primeiro
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp all-import run 5 \
--force-run --disable-log \
--allow-root --path=$PATH_WP
# Listar perfis de importação
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp all-import status \
--allow-root --path=$PATH_WP
```
---
## Importação via CSV (Script)
```bash
#!/bin/bash
# Importar produtos a partir de CSV (colunas: SKU,TITULO,PRECO)
PATH_WP="/home/USER/public_html"
WP="/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=$PATH_WP"
CSV="/home/USER/produtos.csv"
ERROS=0
OK=0
tail -n +2 "$CSV" | while IFS=, read -r SKU TITULO PRECO; do
ID=$($WP wc product create \
--user=1 \
--sku="$SKU" \
--name="$TITULO" \
--regular_price="$PRECO" \
--type=simple \
--status=publish \
--porcelain 2>/dev/null)
if [ -n "$ID" ] && [ "$ID" -gt 0 ] 2>/dev/null; then
echo "[OK] $SKU → ID $ID"
OK=$((OK+1))
else
echo "[ERRO] $SKU — falhou"
ERROS=$((ERROS+1))
fi
done
echo "Importação concluída. OK: $OK | Erros: $ERROS"
```
---
## Scripts de Manutenção
### Normalização Preventiva de Dados
```bash
#!/bin/bash
PATH_WP="/home/USER/public_html"
WP="/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=$PATH_WP"
echo "=== LIMPEZA WOOCOMMERCE ==="
echo "Site: $PATH_WP | $(date)"
$WP wc tool run delete_orphaned_variations --user=1 --quiet && echo "[OK] Variações órfãs"
$WP wc tool run recount_terms --user=1 --quiet && echo "[OK] Contadores taxonomias"
$WP wc tool run clear_sessions --user=1 --quiet && echo "[OK] Sessões"
$WP wc tool run clear_transients --user=1 --quiet && echo "[OK] Transients"
$WP cache flush && echo "[OK] Object cache"
$WP rewrite flush && echo "[OK] Rewrite rules"
$WP db optimize --quiet && echo "[OK] BD optimizada"
echo "=== CONCLUÍDO ==="
```
### Manutenção WooCommerce em Todos os Sites CWP
```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")
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"
WP="$php_bin /usr/local/bin/wp --allow-root --path=$dir"
echo "=== $user ($dir) ==="
# Verificar se WooCommerce está activo
if $WP plugin is-active woocommerce 2>/dev/null; then
$WP wc tool run clear_transients --user=1 --quiet 2>/dev/null
$WP wc tool run recount_terms --user=1 --quiet 2>/dev/null
echo " [WC] Limpeza WooCommerce concluída."
else
echo " [--] WooCommerce não activo."
fi
done
```
---
## Limitações e Bugs Conhecidos
### Memory Exhaustion — Override CWP
```bash
# -d memory_limit antes de /usr/local/bin/wp
/opt/alt/php-fpm83/usr/bin/php -d memory_limit=2G /usr/local/bin/wp wc product list \
--user=1 --per_page=100 --format=ids \
--allow-root --path=/home/USER/public_html
# Para catálogos muito grandes: iterar com --per_page=100 e --page=N
for PAGE in 1 2 3 4 5; do
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp wc product list \
--user=1 --per_page=100 --page=$PAGE --format=ids \
--allow-root --path=/home/USER/public_html
done
```
### Bug `wp wc update` — Versão BD não actualiza
```bash
# Verificar versão instalada
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp plugin get woocommerce \
--field=version --allow-root --path=/home/USER/public_html
# Forçar actualização manual do registo BD
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_db_version "9.X.X" \
--allow-root --path=/home/USER/public_html
```
### Bypass Wizard de Onboarding
```bash
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_onboarding_opt_in "yes" \
--allow-root --path=/home/USER/public_html
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_task_list_hidden "yes" \
--allow-root --path=/home/USER/public_html
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_setup_wizard_data \
'{"setup_wizard":"completed"}' --allow-root --path=/home/USER/public_html
```
---
## Settings via wp_options
Algumas configurações WooCommerce não têm endpoint CLI nativo. Usar `wp option update` directamente:
```bash
PATH_WP="/home/USER/public_html"
# Moeda
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_currency "EUR" \
--allow-root --path=$PATH_WP
# Posição do símbolo de moeda
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_currency_pos "right_space" \
--allow-root --path=$PATH_WP
# Separadores de preço (PT-PT)
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_price_thousand_sep "." \
--allow-root --path=$PATH_WP
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_price_decimal_sep "," \
--allow-root --path=$PATH_WP
# País de base da loja
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_default_country "PT" \
--allow-root --path=$PATH_WP
# Activar impostos
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp option update woocommerce_calc_taxes "yes" \
--allow-root --path=$PATH_WP
```
---
*Referência WooCommerce CLI CWP | Descomplicar® | v1.0.0 | 18-02-2026*