
Woocommerce Brasil
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.
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.
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 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.
A função json_validate do PHP 8.3 diz se a string é JSON válido sem montar array nem objeto. Serve para…
Tire a chave de API do código com variável de ambiente, bloqueie o .env no nginx e entenda por que…
Troque strpos e substr por str_contains, str_starts_with e str_ends_with no PHP 8, com o polyfill para quem ainda mantém servidor…
Copiou um InstallData.php de tutorial antigo e o atributo não apareceu depois do setup:upgrade? Veja a classe de Data Patch…
Função pronta para gerar um cupom único por cliente depois do pedido concluído, com WC_Coupon, data de expiração, limite de…
Como registrar um modifier no pool do formulário de produto do Magento 2 e criar um campo próprio na aba,…