--- name: woocommerce-cli description: Gestão WooCommerce via WP-CLI no servidor CWP. Cobre produtos, encomendas, clientes, shipping, gateways de pagamento, importação/exportação em massa e automação. layer: wiki --- # /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 \ --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 --us