Rishidocs

Snippets úteis

3 min de leituraAtualizado há 1 semana

Coletânea de snippets PHP para situações específicas que não têm configuração no admin. Use Code Snippets ou adicione no functions.php do tema filho.

Sem suporte para snippets

O suporte oficial não cobre snippets customizados nem revisão de código. Teste em staging antes de aplicar em produção.

Exibir uma faixa promocional no topo do checkout (oferta limitada, frete grátis, etc.).

add_action( 'wc_smart_checkout_after_header', function () { ?>
  <style>
    .checkout-header + .checkout-header-banner::before {
      position: relative;
      content: "";
      display: inline-flex;
      width: 100%;
      height: 64px;
      background-image: url(https://exemplo.com.br/promo.png);
      background-size: contain;
      background-repeat: no-repeat;
      background-position: center;
      background-color: #011032;
    }
  </style>
<?php } );

Você pode trocar o CSS por HTML qualquer (texto, imagem, link). Para um contador regressivo, é necessário JavaScript adicional. O timestamp de quando o cliente entrou no checkout fica disponível em:

WC()->session->get( 'smart_checkout_started_at' );

Permitir remover itens no checkout

Por padrão, o cliente não pode remover itens no checkout (a intenção é que ele finalize). Para liberar:

add_filter( 'wc_smart_checkout_quantity_input_min', '__return_zero' );
add_filter( 'woocommerce_update_order_review_fragments', function( $fragments ) {
  if ( ! isset( $fragments['form.woocommerce-checkout'] ) || ! WC()->cart->is_empty() ) {
    return $fragments;
  }

  $fragments['form.woocommerce-checkout'] .= '<script>window.location = "' . home_url() . '"</script>';

  return $fragments;
});

Quando o cliente esvazia o carrinho, é redirecionado para a home.

Ativar notas do pedido

O campo "Notas do pedido" é nativo do WooCommerce. Para ativar:

add_filter( 'woocommerce_enable_order_notes_field', '__return_true' );

Integração com Customily

Customily personaliza imagens de produtos. Para exibir a imagem personalizada (em vez da imagem padrão) no resumo do checkout:

add_filter( 'wc_smart_checkout_order_items_thumbnail', function ( $image, $cart_item ) {
  if ( isset( $cart_item['property[_customily-thumb]'] ) || isset( $cart_item['property___customily-thumb'] ) ) {
    $property = $cart_item['property[_customily-thumb]'] ?? $cart_item['property___customily-thumb'];

    return '<img src="' . esc_url( $property['value'] ) . '" style="object-fit: contain;" />';
  }

  return $image;
}, 100, 2 );

Exibir detalhes do pedido na página de boleto

Por padrão, a página de boleto mostra apenas o boleto. Para incluir itens, total e endereço:

add_filter( 'wc_smart_checkout_order_details_bank_slip_page', '__return_true' );

Ativar Order Bump na página de pagar pedido

Por padrão, Order Bump é desabilitado na página de pagar pedido pública. Para ativar:

add_filter( 'wc_smart_checkout_disable_order_bump_for_pay_page', '__return_false' );

Remover restrição de tamanho dos campos número/complemento

Em raros casos, a limitação interfere com auto-completar de cartão de crédito. Para desativar:

add_filter( 'wc_smart_checkout_restrict_address_fields_length', '__return_false' );

Mudar etapa padrão para clientes logados

Por padrão, clientes logados começam na etapa de endereço de entrega. Para começar diretamente em pagamento:

add_filter( 'wc_smart_checkout_default_logged_in_step', function() {
  return 'payment';
});

Customizar ícone de gateway

Substituir o ícone que vem do gateway por um badge customizado:

add_filter( 'wc_smart_checkout_gateway_icon', function( $icon, $gateway ) {
  if ( $gateway->id === 'interpix' ) {
    return '<span class="gateway-badge">Imediato!</span>';
  }
  return $icon;
}, 100, 2 );

Carregar CSS externo

add_filter( 'wc_smart_checkout_custom_style_url', function() {
  return 'https://example.com/style.css';
});

Carregar JS externo

add_filter( 'wc_smart_checkout_custom_script_url', function() {
  return 'https://example.com/main.js';
});

Desativar fonte customizada

Quando você quer que o checkout use a fonte do tema, em vez da fonte que o plugin carrega:

add_filter( 'wc_smart_checkout_load_font', '__return_false' );

Encontrar onde uma função foi definida

Útil para diagnosticar conflitos:

if ( class_exists( 'ReflectionFunction' ) ) {
  $reflFunc = new ReflectionFunction( 'woocommerce_checkout_coupon_form' );
  echo $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
}

Sobrescrever templates

Para mudanças visuais que não cabem no Customizer, copie o template do plugin para o tema:

Template original Caminho no tema
templates/smart-checkout/header.php seutema/smart-checkout/header.php
templates/smart-checkout/footer.php seutema/smart-checkout/footer.php
templates/checkout/thankyou-pages/pix.php seutema/smart-checkout/checkout/thankyou-pages/pix.php

O plugin detecta o arquivo no tema e usa ele em vez do padrão.

Mantenha templates atualizados

Quando você sobrescreve um template, é responsabilidade sua mantê-lo compatível com novas versões do plugin. Updates podem mudar markup que o seu template assume.

Diagnosticar templates carregados de lugar errado

Se o checkout aparece com divs estranhas e você não consegue identificar a origem:

add_action( 'woocommerce_after_template_part', function() {
  if ( function_exists( 'is_checkout' ) && is_checkout() ) {
    $q = new \WC_Logger();
    $q->add( 'debug-templates', print_r( func_get_args(), true ) );
  }
}, 100, 5 );

Acesse o checkout, depois veja os logs em WooCommerce → Status → Logs → debug-templates.

Foi útil?