FernandoAcosta.Netdocs

Funções helper

3 min de leituraAtualizado há 5 dias

Helpers PHP públicos do plugin. Use quando você está chamando o plugin programaticamente (de um cron próprio, de uma integração externa, de um plugin que estende este).

wc_any_shipping_get_tracking_codes( $order )

Retorna todos os códigos de rastreio de um pedido.

Parâmetro Tipo Descrição
$order WC_Order|int Objeto do pedido ou ID

Retorno: array no formato [ 'CODIGO' => 'slug_transportadora' ]. Vazio quando o pedido não tem rastreio.

$codes = wc_any_shipping_get_tracking_codes( 123 );

foreach ( $codes as $code => $slug ) {
  $name = wc_any_shipping_notify_get_shipping_company_name( $slug );
  echo "$name: $code\n";
}

Roda o filtro wc_any_shipping_get_tracking_codes antes de retornar — veja hooks: actions e filtros.

wc_any_shipping_notify_update_tracking_code( $order, $tracking_code, $shipping_company_slug = '', $remove = false )

Adiciona ou remove um código de rastreio em um pedido. É a função que o admin, a lista de pedidos e a REST API chamam por baixo dos panos.

Parâmetro Tipo Descrição
$order WC_Order|int Objeto do pedido ou ID
$tracking_code string Código a adicionar/remover
$shipping_company_slug string Slug interno (obrigatório ao adicionar; ignorado ao remover)
$remove bool true pra remover, false (padrão) pra adicionar

Retorno: array com chaves failed, removed, added e status_updated — cada uma é 'yes', 'no' ou (no caso de status_updated) o slug do novo status. Se o código já existe e não está sendo removido, retorna false.

Efeitos colaterais ao adicionar:

  • Adiciona uma nota interna no pedido.
  • Pode atualizar o status do pedido (veja status do pedido).
  • Dispara o action wcasn_tracking_added.
  • Envia o e-mail de notificação pro cliente (se habilitado).

Efeitos colaterais ao remover: apenas adiciona uma nota interna. Não dispara e-mail nem muda status.

// Adicionar
$result = wc_any_shipping_notify_update_tracking_code( 123, 'BR123456789BR', '0' );

if ( 'yes' === $result['added'] ) {
  // OK
}

// Remover
wc_any_shipping_notify_update_tracking_code( 123, 'BR123456789BR', '', true );
String vazia em `$tracking_code` apaga TODOS os rastreios do pedido

Chamar a função com $tracking_code = '' deleta a meta key inteira (_wc_any_shipping_notify_tracking_code). Sempre valide antes.

wc_any_shipping_notify_trigger_tracking_code_email( $order, $tracking_code, $shipping_company_slug = '' )

Dispara o e-mail de rastreio sem adicionar nenhum código no pedido. Útil pra reenviar a notificação manualmente, ou pra disparar um e-mail em um pedido existente que já tem o código gravado.

Parâmetro Tipo Descrição
$order WC_Order Objeto do pedido
$tracking_code string Código a referenciar no corpo do e-mail
$shipping_company_slug string Slug interno da transportadora

Retorno: void. Se o e-mail estiver desabilitado em Configurações → E-mails, a função simplesmente não envia.

$order = wc_get_order( 123 );
wc_any_shipping_notify_trigger_tracking_code_email( $order, 'BR123456789BR', '0' );

wc_any_shipping_notify_get_shipping_companies()

Retorna todas as transportadoras cadastradas em cadastrar transportadoras.

Retorno: array no formato [ slug => [ 'name' => '...', 'url' => '...' ] ]. Vazio quando nenhuma foi cadastrada.

foreach ( wc_any_shipping_notify_get_shipping_companies() as $slug => $company ) {
  echo "$slug = {$company['name']} ({$company['url']})\n";
}

Roda o filtro wc_any_shipping_notify_available_companies antes de retornar.

wc_any_shipping_notify_get_shipping_company_name( $slug )

Retorna o nome de exibição de uma transportadora a partir do slug.

Parâmetro Tipo Descrição
$slug string Slug interno

Retorno: string. Se o slug não existe (ex: transportadora foi removida), retorna 'Transportadora'.

Roda o filtro wc_any_shipping_notify_shipping_company_name antes de retornar.

wc_any_shipping_notify_get_shipping_company_url( $slug, $tracking_code = false, $order = null )

Gera a URL final de rastreio, com placeholders já substituídos.

Parâmetro Tipo Descrição
$slug string Slug interno
$tracking_code string|false Código pra substituir {tracking_code} (ou false)
$order WC_Order|null Pedido pra substituir {order_number} (ou null)

Retorno: string com a URL final. Se o slug não existe, retorna a URL da página da conta (my-account) como fallback.

Roda o filtro wc_any_shipping_notify_shipping_company_url antes de retornar.

$order = wc_get_order( 123 );
$url = wc_any_shipping_notify_get_shipping_company_url( '0', 'BR123456789BR', $order );
// "https://www.linkcorreios.com.br/?id=BR123456789BR"

any_shipping_debug( $message, $backtrace = false )

Helper de log. Escreve em um arquivo do logger do WooCommerce, com a fonte any-shipping-debug.

Parâmetro Tipo Descrição
$message string Mensagem
$backtrace bool Se true, inclui o backtrace do PHP

Retorno: void.

any_shipping_debug( 'Vai chamar API externa pra pedido ' . $order->get_id() );

// com backtrace, pra entender de onde a chamada veio:
any_shipping_debug( 'Estado inesperado', true );

Veja resolução de problemas e debug pra detalhes de onde os logs ficam.

Foi útil?