Onde os produtos do WooCommerce ficam armazenados no banco de dados do WordPress?

Onde o WooCommerce armazena os dados de produtos no banco de dados

Resumo: O WooCommerce armazena todos os produtos como custom post types em wp_posts, com os atributos e metadados (preço, SKU, estoque) em wp_postmeta. Categorias, tags e atributos de produto ficam na família de tabelas wp_terms. Os indicadores de visibilidade e de tipo de produto são armazenados como chaves de post meta.

Às vezes você adiciona novos produtos do WooCommerce no seu site de staging e quer apenas levar esses novos produtos para o site em produção sem afetar outros dados como pedidos e transações. Saber quais tabelas do banco de dados o WooCommerce usa torna essa transferência segura e previsível: você copia apenas as linhas que contêm dados de produtos e deixa as linhas de pedidos intactas.

Este artigo mapeia cada tabela que contém dados de produtos do WooCommerce, explica as colunas que importam no dia a dia e inclui SQL pronto para copiar e colar para as consultas mais comuns. Se você já se perguntou por que uma alteração de produto no staging não foi refletida após um push parcial, a resposta é quase sempre uma tabela esquecida.

Por que saber onde os produtos são armazenados importa

Entender onde os produtos do WooCommerce são armazenados é útil em várias situações práticas:

  • Consultas personalizadas: Recuperar dados de produtos usando consultas SQL para relatórios ou funcionalidades sob medida.
  • Otimização do banco de dados: Limpar dados desnecessários para melhorar o desempenho.
  • Solução de problemas: Resolver problemas com detalhes de produto ausentes ou incorretos.
  • Migração de dados: Mover produtos entre diferentes instalações do WordPress sem tocar nos dados de pedidos ou clientes.
  • Depurar atributos ausentes: Quando a cor ou o tamanho de um produto não aparece no front-end, saber qual tabela de taxonomia inspecionar economiza um tempo considerável de depuração.

Tabelas principais que armazenam os dados de produtos do WooCommerce

O WooCommerce armazena os dados de produtos principalmente em duas tabelas:

  • wp_posts – Contém as entradas de produto com um post type product ou product_variation.
Encontrar detalhes de produto do WooCommerce usando a tabela wp_posts
  • wp_postmeta – Armazena metadados adicionais de cada produto, vinculados via post_id (ID do produto).
Encontrar o detalhe do produto usando a tabela wp_postmeta

Visão geral das tabelas

A tabela a seguir relaciona cada área de armazenamento principal ao que ela contém e às colunas mais frequentemente necessárias em consultas ou migrações:

Tabela O que armazena Colunas principais
wp_posts Cada produto e variação como uma linha ID, post_title, post_type = 'product', post_status, post_modified
wp_postmeta Preço, SKU, estoque, peso, dimensões — uma linha por chave e por produto post_id, meta_key, meta_value
wp_terms Nomes de categorias e tags, rótulos de atributos term_id, name, slug
wp_term_taxonomy Declara se um termo é uma categoria, tag ou atributo term_taxonomy_id, taxonomy, description
wp_term_relationships Vincula cada produto (object_id) aos seus termos object_id, term_taxonomy_id
wp_termmeta Metadados adicionais associados aos termos term_id, meta_key, meta_value
wp_woocommerce_attribute_taxonomies Definições de atributos globais (por ex., Cor, Tamanho) attribute_id, attribute_name, attribute_type

Exemplo prático: recuperar um produto com seu preço e nível de estoque

A consulta abaixo une wp_posts a wp_postmeta para obter o preço e o status de estoque de um único produto. Substitua 12345 pelo valor ID do produto na tabela wp_posts:

SELECT
  p.ID,
  p.post_title,
  MAX(CASE WHEN pm.meta_key = '_price'        THEN pm.meta_value END) AS price,
  MAX(CASE WHEN pm.meta_key = '_stock_status' THEN pm.meta_value END) AS stock_status
FROM wp_posts p
JOIN wp_postmeta pm ON pm.post_id = p.ID
WHERE p.ID = 12345
  AND p.post_type = 'product'
GROUP BY p.ID, p.post_title;

Em nossos testes com o WooCommerce 9.x, a chave meta _price está sempre preenchida mesmo quando o produto não tem um preço promocional explícito: ela reflete o preço normal. Pela experiência do suporte do WP STAGING, a fonte de confusão mais comum é supor que o WooCommerce usa tabelas próprias e totalmente separadas para os produtos. Não é o caso: ele estende wp_posts por meio do sistema de custom post types, de modo que cada produto é uma linha de post com um valor de post_type igual a product.

Referência rápida: encontre o que você precisa

Use esta tabela para ir direto à tabela e à coluna corretas sem ler toda a documentação do esquema:

Eu quero … Tabela Filtro
Listar todos os produtos wp_posts post_type = 'product'
Encontrar o preço de um produto wp_postmeta meta_key = '_price'
Encontrar o preço promocional de um produto wp_postmeta meta_key = '_sale_price'
Verificar o status de estoque wp_postmeta meta_key = '_stock_status'
Encontrar o SKU de um produto wp_postmeta meta_key = '_sku'
Listar as categorias de um produto wp_term_relationshipswp_term_taxonomywp_terms taxonomy = 'product_cat'
Verificar se um produto está em destaque wp_term_relationships slug de termo featured em product_visibility
Encontrar todas as variações de um produto wp_posts post_type = 'product_variation' e post_parent = <ID do produto>

Tabelas que armazenam categorias, tags e atributos de produtos

Além das tabelas centrais de produtos, o WooCommerce usa várias tabelas relacionadas a taxonomias para gerenciar tipos de produto, categorias, subcategorias, tags e atributos:

  • wp_terms – Armazena as categorias e tags de produtos.
  • wp_termmeta – Armazena metadados dos termos de produto.
  • wp_term_taxonomy – Define o tipo de taxonomia (por exemplo, categoria, tag, atributo).
  • wp_term_relationships – Vincula os produtos às suas categorias e atributos.
  • wp_woocommerce_termmeta – Armazena dados adicionais de termos específicos do WooCommerce.
  • wp_woocommerce_attribute_taxonomies – Gerencia especificamente os atributos de produto.

Quando um atributo de produto não aparece corretamente no front-end, verifique tanto wp_term_relationships (para confirmar que o produto está vinculado ao termo correto) quanto wp_term_taxonomy (para confirmar que a coluna taxonomy corresponde ao slug do atributo esperado).

Tipos de produto e visibilidade no WooCommerce

O WooCommerce gerencia diferentes tipos de produto usando a taxonomia product_type, que inclui as seguintes opções padrão:

  • simple – Um produto padrão sem variações.
  • grouped – Um conjunto de produtos relacionados.
  • variable – Um produto com várias variações.
  • external – Um produto vendido em um site externo.

Desde o WooCommerce 3+, uma nova taxonomia chamada product_visibility gerencia:

  • Visibilidade em busca e catálogo – Usa termos como exclude-from-search e exclude-from-catalog.
  • Produtos em destaque – Identificados pelo termo featured.
  • Status de estoque – Usa outofstock para indicar produtos indisponíveis.
  • Avaliações – Termos como rated-1 a rated-5 categorizam as avaliações de produtos.

Cada atributo de produto é armazenado como uma taxonomia personalizada, facilitando categorizar e filtrar produtos dinamicamente.

Operações comuns

Excluir produtos em massa com segurança por post type

Para remover todos os produtos de um banco de dados de teste ou populado com dados de exemplo, mire em wp_posts por post type e limpe as linhas de postmeta relacionadas na mesma operação:

-- Remove postmeta first (avoids orphaned rows)
DELETE pm
FROM wp_postmeta pm
JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.post_type IN ('product', 'product_variation');

-- Then remove the product and variation rows
DELETE FROM wp_posts
WHERE post_type IN ('product', 'product_variation');

⚠️ Execute isto sempre primeiro em um banco de dados de staging. Isso exclui permanentemente todas as linhas de produtos e seus metadados. Não toca nas tabelas de pedidos.

Migrar produtos do WooCommerce do staging para a produção

Ao enviar apenas produtos — e não pedidos — de um ambiente de staging, o conjunto mínimo de tabelas a incluir é:

  • wp_posts — linhas onde post_type IN ('product', 'product_variation')
  • wp_postmeta — linhas cujo post_id pertence a um produto ou variação
  • wp_terms, wp_termmeta, wp_term_taxonomy, wp_term_relationships — linhas vinculadas a product_cat, product_tag e taxonomias de atributos personalizadas
  • wp_woocommerce_attribute_taxonomies — se você tiver definições de atributos globais personalizadas no ambiente de origem

Deixe de fora do push todas as tabelas wp_woocommerce_order* e wp_wc_order*: incluí-las sobrescreveria os pedidos de clientes em produção com dados de staging.

Redefinir os dados de produtos de teste

Depois de povoar uma loja de staging com produtos de teste, redefina-a para um estado limpo excluindo as linhas onde post_type = 'product' com a consulta acima. O push seletivo do WP STAGING também permite definir quais post types incluir ou excluir, de modo que você pode enviar produtos reais do staging para a produção sem escrever SQL bruto.

Boas práticas para copiar dados de produtos para um site em produção

Ao mover novos produtos de um site de staging para um site em produção, proteja os pedidos e os dados de clientes seguindo estes passos:

  1. Faça backup do banco de dados de produção. Exporte um snapshot completo antes de qualquer push para poder restaurar imediatamente se algo der errado.
  2. Copie apenas as tabelas relevantes. Foque em wp_posts, wp_postmeta e nas tabelas relacionadas a taxonomias.
  3. Exclua as tabelas relacionadas a pedidos. Evite tabelas com o prefixo wp_woocommerce_, a menos que pretenda explicitamente migrar dados de pedidos.
  4. Use uma ferramenta de migração. Plugins como o WP STAGING lidam automaticamente com pushes seletivos de tabelas, incluindo a busca e substituição em dados serializados para diferenças de URL entre ambientes.
  5. Verifique primeiro no staging. Execute uma consulta somente leitura no banco de dados de staging para confirmar a contagem esperada de linhas de produto antes de iniciar o push.

Conclusão

Os produtos do WooCommerce ficam armazenados principalmente em wp_posts e wp_postmeta, enquanto categorias, atributos e configurações de visibilidade são gerenciados em tabelas de taxonomias relacionadas. Entender essa estrutura ajuda a migrar com segurança os dados de produtos sem afetar as operações da loja em produção.

Referências:

Artigos relacionados

Rene Hermenau

Autor: Rene Hermenau

Sobre o autor: René Hermenau é o fundador do WP STAGING. Ele trabalha com backups do WordPress, ambientes de staging, migrações, gestão de bases de dados e fluxos de implantação seguros.