# Migração WooCommerce para PrestaShop: guia completo

> Apresentação A Migração WooCommerce (dfmigratewoocommerce) migra uma loja WooCommerce completa para o PrestaShop 8 ou 9: categorias, tags, atributos globais, produtos simples e variáveis (variações convertidas em combinações), imagens, metadados…

- Página: <https://www.datafirefly.com/pt/documentation/dfmigratewoocommerce/>
- Idioma: pt
- Atualizado em: 2026-09-03
- Outros idiomas: [fr](https://www.datafirefly.com/documentation/dfmigratewoocommerce/index.md), [en](https://www.datafirefly.com/en/documentation/dfmigratewoocommerce/index.md), [es](https://www.datafirefly.com/es/documentation/dfmigratewoocommerce/index.md), [de](https://www.datafirefly.com/de/documentation/dfmigratewoocommerce/index.md), [it](https://www.datafirefly.com/it/documentation/dfmigratewoocommerce/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfmigratewoocommerce/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfmigratewoocommerce/index.md)
- Índice: <https://www.datafirefly.com/pt/documentation/llms.txt>

## Apresentação

A Migração WooCommerce (`dfmigratewoocommerce`) migra uma loja WooCommerce completa para o PrestaShop 8 ou 9: categorias, tags, atributos globais, produtos simples e variáveis (variações convertidas em combinações), imagens, metadados personalizados, clientes com moradas e encomendas. O módulo liga-se diretamente à base de dados MySQL do WordPress, trabalha por lotes AJAX sem timeout e conserva um mapeamento Woo ↔ PS na base de dados que torna cada etapa relançável sem duplicados.

A base de dados WooCommerce de origem é unicamente **lida**, nunca modificada. Todas as escritas são feitas do lado do PrestaShop.

## Instalação

1. No back-office PrestaShop, abra **Módulos > Gestor de módulos > Carregar um módulo** e selecione o ZIP `dfmigratewoocommerce.zip`.
2. O módulo cria três tabelas técnicas: `df_woomig_mapping` (correspondências Woo ↔ PS), `df_woomig_log` (registo) e `df_woomig_progress` (progressão das etapas).
3. Clique em **Configurar** para abrir a interface de migração.

## Ligação ao WooCommerce

No separador **Ligação**, preencha:

- **Anfitrião / Porta**: servidor MySQL da base de dados WordPress (porta 3306 por defeito);
- **Base de dados, Utilizador, Palavra-passe**: credenciais da base de dados WordPress;
- **Prefixo de tabelas**: geralmente `wp_`, verifique em `wp-config.php` ($table_prefix);
- **URL do site**: o endereço público da loja WooCommerce, usado para descarregar as imagens (modo HTTP), ou um caminho no sistema de ficheiros em modo local.

Clique em **Testar a ligação**: o módulo mostra o número de produtos, categorias, tags, atributos globais, clientes e encomendas detetados na origem.

Se o seu alojamento bloquear as ligações MySQL remotas, importe um dump da base de dados WordPress para um esquema dedicado no servidor PrestaShop (ex. `wp_source`) e ligue o módulo a esse esquema em `localhost`. Um túnel SSH também funciona.

## Parâmetros

- **Idioma por defeito**: idioma PrestaShop no qual os conteúdos Woo (monolingues) serão escritos;
- **Grupo de impostos por defeito**: aplicado a todos os produtos migrados. Os preços Woo são copiados tal como estão para o preço sem IVA do PrestaShop;
- **Atributos em características**: ativa o duplo mapeamento (cada atributo global torna-se também uma característica, visível nos produtos simples) e a recuperação das postmeta personalizadas em características `meta:*`;
- **Tamanho do lote**: número de entidades processadas por pedido AJAX (25 por defeito; reduza em alojamento partilhado lento);
- **Modo de imagens**: `http` (descarregamento a partir do URL do site) ou `local` (o URL do site é tratado como um caminho de sistema de ficheiros que contém `wp-content/uploads`);
- **Dry-run**: modo de simulação: tudo é registado, nada é escrito;
- **Transportadora por defeito**: atribuída às encomendas migradas.

Ponto sensível para uma loja portuguesa: o WooCommerce guarda muitas vezes os preços **com IVA**, enquanto o PrestaShop espera preços sem IVA. Antes de migrar, verifique a definição « Introduzir preços com imposto » no WooCommerce; se estiver ativa, os preços migrados ficarão 23 % acima do esperado no continente e deverão ser recalculados. Crie também de antemão os grupos de impostos correspondentes às taxas do continente (23 %, 13 %, 6 %) e, se necessário, às dos Açores e da Madeira.

## Lançar a migração

No separador **Migração**, execute as etapas **pela ordem**: cada uma assenta no mapeamento criado pelas anteriores:

1. **Atributos**: cada atributo global Woo (`pa_*`) torna-se um grupo de atributos PS (os grupos de cor são detetados) e, se a opção estiver ativa, uma característica. Todos os valores são criados dos dois lados.
2. **Categorias**: a árvore completa é reconstruída; as categorias-mãe em falta são resolvidas recursivamente, as órfãs associadas à raiz com um aviso.
3. **Tags**: desduplicados por nome.
4. **Produtos**: produtos simples e variáveis: preços, preços riscados (SpecificPrice), SKU, peso, dimensões, stock, estado, produto virtual, ligações a categorias/tags, características, metadados personalizados. As variações tornam-se combinações com impacto de preço, stock e referência próprios. As imagens do produto são migradas na sequência.
5. **Imagens**: etapa de recuperação: percorre os produtos já migrados e importa as imagens em falta (imagem principal + galeria), com regeneração de todas as miniaturas.
6. **Clientes**: contas com moradas de faturação e de entrega. Palavras-passe regeneradas em bcrypt: os clientes usam « esqueci-me da palavra-passe » no primeiro início de sessão. Os e-mails já existentes do lado do PS são reutilizados, nunca duplicados.
7. **Encomendas**: deteção automática HPOS (WooCommerce 8+, tabelas `wc_orders`) ou legacy (`wp_posts`). Linhas, totais, moeda e estados mapeados para os estados do PrestaShop. Não é enviado nenhum e-mail.

Cada etapa mostra uma barra de progresso em direto e pode ser interrompida e relançada: retoma exatamente onde tinha parado.

Faça primeiro uma passagem completa em **dry-run** para validar o perímetro no registo, e desative depois o dry-run e relance.

## Mapeamento e relançamentos

O separador **Mapeamento** mostra o número de correspondências por tipo de entidade. Qualquer entidade presente no mapeamento é ignorada nos relançamentos: pode relançar uma etapa completa sem criar duplicados. O botão de reinicialização apaga o mapeamento de um tipo (ou de tudo); as entidades já criadas do lado do PrestaShop permanecem.

## Registo

O separador **Registo** lista os eventos por etapa e por nível (info, sucesso, aviso, erro): produtos criados, variações ignoradas por falta de atributo global, imagens não encontradas, encomendas sem cliente... Purga num clique.

## Depois da migração

- Lance uma reindexação da pesquisa: **Parâmetros da loja > Pesquisa > Indexar todos os produtos**;
- Verifique uma amostra de preços se a sua loja Woo guardava preços com IVA (o PrestaShop espera valores sem IVA);
- Controle o grupo de impostos, as transportadoras e os meios de pagamento;
- Elimine a configuração de ligação (ou desinstale o módulo): as credenciais MySQL ficam guardadas na configuração do PrestaShop.

## Limites conhecidos

- Os atributos **locais** (definidos num único produto, não `pa_*`) usados em variação não podem tornar-se combinações: o PrestaShop exige atributos globais. Essas variações são ignoradas e assinaladas no registo. Converta-as em atributos globais do lado do Woo antes da migração, se necessário.
- As encomendas são migradas a título de histórico: os impostos não são recalculados, os totais Woo são copiados tal como estão. Não substituem as faturas emitidas pelo seu software certificado pela AT.
- Os cupões, as avaliações de produtos e as subscrições não são migrados nesta versão.

## Resolução de problemas

### « Falha de ligação » no teste

Verifique que o utilizador MySQL está autorizado a ligar-se a partir do IP do servidor PrestaShop (`GRANT ... ON base.* TO 'user'@'ip'`) e que a porta 3306 está aberta. Caso contrário, use um dump local ou um túnel SSH.

### Imagens em falta em modo HTTP

O site WooCommerce deve estar acessível em HTTP/HTTPS a partir do servidor PrestaShop. Se o site de origem estiver encerrado, use o modo `local` copiando `wp-content/uploads` para o servidor PrestaShop e indicando o seu caminho como URL do site.

### Variações ausentes num produto

Consulte o registo: se as variações usavam atributos locais (não globais), são ignoradas por conceção. O produto-mãe é migrado com os seus dados de base.
