Trocou a página de finalizar compra pelo checkout em blocos e o campo de CPF sumiu. O filtro woocommerce_checkout_fields não é lido ali: o bloco é React e só desenha campo registrado pela API de campos adicionais do WooCommerce 9.x.
Registrando no hook certo
O registro tem que acontecer dentro de woocommerce_init, e o id precisa de namespace com barra. Isso vai no plugin do site ou no functions.php do tema filho:
add_action( 'woocommerce_init', function () {
if ( ! function_exists( 'woocommerce_register_additional_checkout_field' ) ) {
return;
}
woocommerce_register_additional_checkout_field( [
'id' => 'rtk-loja/cpf',
'label' => 'CPF',
'location' => 'contact',
'type' => 'text',
'required' => true,
] );
} );O location aceita três valores e cada um muda onde o campo aparece: contact gruda no bloco do e-mail, address se repete em cobrança e entrega, e order abre um bloco de informações extras no fim. Chamado fora do woocommerce_init, ou com id sem barra, o campo não é registrado e a tela não reclama.
Onde o valor foi parar
A pegadinha é essa: o valor não vira uma meta com o nome que você escolheu. O WooCommerce prefixa a chave conforme o location, então procurar por cpf na meta do pedido não acha nada.
// contact e order caem no mesmo grupo
$cpf = $order->get_meta( '_wc_other/rtk-loja/cpf' );
// location address grava um par, cobrança e entrega
$cob = $order->get_meta( '_wc_billing/rtk-loja/cpf' );
$ent = $order->get_meta( '_wc_shipping/rtk-loja/cpf' );Pedido antigo não ganha o campo retroativamente. Ajuste o template da nota fiscal para tratar meta vazia antes de subir isso em produção.
Se travou nisso e precisa de ajuda, me chama aqui.