Files
claude-plugins/wordpress/skills/woocommerce-cli/references/commands.md
Emanuel Almeida 9404af7ac9 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>
2026-03-05 17:16:32 +00:00

18 KiB

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

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)

/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

/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

/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)

# 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

# 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

/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

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

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

/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)

/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

#!/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

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

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

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

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

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

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

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)

#!/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

#!/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

#!/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

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

# 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

/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:

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