HPOS no WooCommerce: ativar as tabelas wc_orders e migrar os pedidos

Em WooCommerce > Configurações > Avançado > Recursos o armazenamento de pedidos está travado em “posts do WordPress”, com aviso de plugin incompatível do lado, e a sincronização que você ligou semana passada nunca termina. Os dois se resolvem por linha de comando. Antes de tudo, dump do banco: migração de pedido não tem desfazer.

Veja quanto ainda falta migrar

sudo -u www-data wp db export ~/antes-do-hpos.sql
sudo -u www-data wp wc hpos status
sudo -u www-data wp wc hpos count_unmigrated
sudo -u www-data wp wc hpos sync --batch-size=500

O sync roda em lote e pode ser chamado quantas vezes quiser: só toca no que falta. Em loja grande eu deixo rodando numa tela separada e repito o count_unmigrated até zerar. Se parar no meio nada quebra: com o modo de compatibilidade ligado o pedido continua indo para os dois lugares.

Confira a contagem antes de virar a chave

sudo -u www-data wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_type='shop_order'"
sudo -u www-data wp db query "SELECT COUNT(*) FROM wp_wc_orders"
sudo -u www-data wp option get woocommerce_custom_orders_table_enabled
sudo -u www-data wp option get woocommerce_custom_orders_table_data_sync_enabled

Os números raramente batem exatos: wp_wc_orders guarda também os rascunhos de checkout, que no modelo antigo eram posts com status wc-checkout-draft. O que não pode é faltar pedido pago do lado novo. Conte agora: depois da virada o pedido novo só deixa um registro reserva em wp_posts com post_type shop_order_placehold e o COUNT de shop_order congela. Conferido, ligue com sudo -u www-data wp wc hpos enable, que grava yes na option woocommerce_custom_orders_table_enabled.

O plugin incompatível e a sync dupla

O seletor fica cinza porque algum plugin não declarou compatibilidade com a funcionalidade custom_order_tables. A lista sai em wp-admin/plugins.php?plugin_status=incompatible_with_feature&feature_id=custom_order_tables. Atualize ou troque: plugin que ainda lê wp_postmeta devolve pedido vazio depois da virada.

Deixe a sincronização dupla ligada umas duas semanas antes de desligar com wp option update woocommerce_custom_orders_table_data_sync_enabled no. É o botão de voltar atrás: enquanto ela existe, um wp wc hpos disable devolve a loja para as tabelas antigas.

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *