Domine os ganchos personalizados do WooCommerce: um guia completo, desde o início até práticas avançadas.

Leitura de 2 minutos
2026-03-14
2026-06-04
2,266
Eu recebo uma comissão quando você faz compras através dos links abaixo, sem custo adicional para você.

Conceitos básicos dos plugins para o WooCommerce

Antes de fazer personalizações mais avançadas, é essencial entender o princípio de funcionamento básico dos ganchos (hooks) do WooCommerce. O WooCommerce é construído sobre o WordPress e, portanto, herda completamente o seu poderoso sistema de ganchos. Os ganchos são divididos em dois tipos principais:action e filter

action Ganchos (hooks) permitem que você “execute” um trecho de código em um momento específico, por exemplo, após um produto ser adicionado ao carrinho de compras ou antes da página de pagamento ser renderizada. Eles não retornam nenhum valor; apenas fornecem uma oportunidade para inserir funções personalizadas. Um exemplo típico…actionUm “gancho” (hook) é…woocommerce_before_add_to_cart_buttonIsso permite que você exiba conteúdo antes de clicar no botão “Adicionar ao carrinho de compras”.

filter Os “ganchos” (hooks) permitem que você modifique os dados. Quando o WooCommerce está prestes a usar uma determinada variável (como o preço, o título ou a descrição), ele utiliza um mecanismo específico para fazer essa alteração.filterO “gancho” (hook) transmite esses dados, e sua função personalizada pode recebê-los, modificá-los e, em seguida, retornar o valor modificado. Por exemplo…woocommerce_product_get_priceOs “ganchos” (hooks) permitem que você modifique dinamicamente o preço dos produtos.

Leitura recomendada WooCommerce: Tutorial Básico de Desenvolvimento de Extensões e Guia Prático

Para usar um “gancho” (hook), você precisa “montar” (mount) sua função personalizada nele. Isso é feito através de duas funções principais:add_action()Usado para ganchos de ação (action hooks).add_filter()Usado para filtrar ganchos (hooks). Essas duas funções são geralmente encontradas no seu subtema (subtopic).functions.phpPode ser chamado a partir de um arquivo ou de um plugin personalizado.

Hospedagem para sites WordPress da UltraHost
Garantia de reembolso em 30 dias, largura de banda ilimitada e banco de dados, proteção contra DDoS gratuita; desconto de 50% na compra de 3 anos (planos de 4 TB a 10 TB).

Como encontrar e usar ganchos (hooks) existentes?

O WooCommerce disponibiliza milhares de “ganchos” (hooks), espalhados por todos os cantos do seu código-fonte. Saber como encontrá-los é o primeiro passo para um desenvolvimento eficaz.

O método mais direto é consultar a documentação oficial dos desenvolvedores do WooCommerce, que contém uma seção específica chamada “Referência de Ganchos” (Hook Reference). No entanto, para uma exploração mais aprofundada, é uma ótima maneira de aprender analisando diretamente os arquivos de templates do WooCommerce. No diretório de plugins do WooCommerce (geralmente localizado em…)wp-content/plugins/woocommerce/templates/Você pode abrir qualquer arquivo de template (como…)single-product.phpoucart/cart.phpAo analisá-lo, descobrirá que está repleto de…do_action()eapply_filters()Esses são os chamados de “ganchos” (hooks) que você pode utilizar.

Por exemplo, no modelo da página de detalhes do produto, você provavelmente verá:

do_action( 'woocommerce_before_single_product' );

Isso significa que você pode usá-lo.add_action( ‘woocommerce_before_single_product’, ‘your_custom_function’ );Execute seu código nesta posição.

Leitura recomendada Tutorial do WooCommerce: construir um site de comércio eletrónico do WordPress completo do zero

Outro ferramenta poderosa é o uso de plugins como “Simply Show Hooks” ou “WP Hooks Finder”, que permitem exibir de forma intuitiva, na interface do site, todos os hooks em execução na página atual, bem como a sua ordem de execução. Isso é essencial para a depuração e a compreensão do processo de funcionamento dos hooks.

Prática de criação de ganchos personalizados

Embora o WooCommerce ofereça vários ganchos (hooks) por padrão, ao desenvolver funcionalidades personalizadas ou plugins mais complexos, criar seus próprios ganchos pode tornar o código mais modular e fácil de manter. Isso segue os mesmos princípios utilizados no uso dos ganchos nativos do sistema.

Definir ganchos (hooks) para ações personalizadas

Para criar um personalizado no seu código,actionGancho: você precisa usar isso nos locais onde deseja que outros desenvolvedores ou módulos possam inserir código.do_action()Funções. Por exemplo, suponha que você esteja construindo um sistema de assinaturas para membros e, após o usuário realizar o upgrade com sucesso, você deseja acionar uma determinada ação:

hospedagem compartilhada da hosting.com
Alto desempenho com CPUs AMD EPYC, armazenamento SSD NVMe e LiteSpeed, suporte interno especializado 24 horas por dia, 7 dias por semana, medidas de segurança avançadas, incluindo SSL, força bruta, malware e proteção contra DDoS, economia de até 73%
// 在你的插件或主题函数文件中
function process_membership_upgrade( $user_id, $new_plan ) {
    // ... 处理升级逻辑 ...

// 触发一个自定义动作钩子,允许其他功能接入
    do_action( 'myplugin_after_membership_upgrade', $user_id, $new_plan );

// ... 继续其他逻辑 ...
}

Agora, outros desenvolvedores podem expandir as funcionalidades adicionando ações aos seus “ganchos” (hooks), por exemplo, enviando um e-mail personalizado:

add_action( ‘myplugin_after_membership_upgrade’, ‘send_upgrade_email’, 10, 2 );
function send_upgrade_email( $user_id, $plan ) {
    // 发送邮件的代码
}

Definir ganchos de filtragem personalizados

Da mesma forma, você pode usar…apply_filters()Vamos criar algo personalizado.filterGancho (hook): Permite que outros modifiquem seus dados. Por exemplo, você tem uma função usada para calcular a taxa de serviço personalizada de um pedido:

function calculate_custom_fee( $cart_total ) {
    $base_fee = 5.00; // 基础手续费

// 允许其他代码修改基础手续费
    $custom_fee = apply_filters( ‘myplugin_custom_fee_amount’, $base_fee, $cart_total );

return $custom_fee;
}

Outros desenvolvedores agora podem modificar facilmente essa taxa de comissão, por exemplo, definindo taxas progressivas com base no total do carrinho de compras:

Leitura recomendada WooCommerce, do iniciante ao especialista: um guia completo para criar um site de comércio eletrónico profissional.

add_filter( ‘myplugin_custom_fee_amount’, ‘adjust_fee_by_cart_total’, 10, 2 );
function adjust_fee_by_cart_total( $fee, $cart_total ) {
    if ( $cart_total > 100 ) {
        $fee = 0; // 大额订单免手续费
    }
    return $fee;
}

Dicas avançadas e melhores práticas

Após dominar o uso básico, seguir algumas dicas avançadas e boas práticas pode tornar o seu código de “ganchos” (hooks) mais robusto e eficiente.

Uso da prioridade e do número de parâmetros

Quando várias funções são montadas no mesmo “gancho” (hook), a ordem de execução é determinada pelos parâmetros de prioridade.add_action()ouadd_filter()No terceiro parâmetro, está definida a prioridade (o valor padrão é 10); quanto menor o número, mais cedo a ação será executada.

Hospedagem Compartilhada InterServer
Hospedagem compartilhada $2.50 USD por mês, primeiro mês $0.1 USD código promocional tryinterserver, 461 scripts de aplicativos em nuvem, instalação com um clique.
add_action( ‘woocommerce_checkout_before_order_review’, ‘function_a’, 5 ); // 先执行
add_action( ‘woocommerce_checkout_before_order_review’, ‘function_b’, 20 ); // 后执行

O quarto parâmetro é usado para especificar o número de argumentos que serão recebidos; ele deve corresponder ao número de argumentos passados pelo hook que você está utilizando.do_actionouapply_filtersO número de parâmetros passados deve ser o mesmo; caso contrário, sua função pode não receber os dados corretos.

Assegurar a manutenibilidade do código

Sempre coloque o código relacionado aos seus “ganchos” (hooks) em subtemas (subtopics).functions.phpO código pode ser armazenado em um arquivo ou em um plugin personalizado e independente. Isso garante que suas alterações não sejam perdidas quando o tema for atualizado. Adicione um prefixo único aos nomes de suas funções e ganchos personalizados (por exemplo, a abreviação do seu plugin ou o nome da sua empresa) para evitar conflitos de nomes com o core do WooCommerce, outros plugins ou temas.

Ao fazer alterações complexas, especialmente quando envolvem a sobreposição de modelos, considere usarwc_get_template()Adicione conteúdo através de funções ou de “ganchos” (hooks), em vez de copiar todo o arquivo de template diretamente. Isso reduzirá ao máximo os problemas de compatibilidade no futuro.

Durante o processo de desenvolvimento, por favor, assegure-se de que o seu site tenha a funcionalidade ativada.WP_DEBUGIsso é para que os avisos ou erros do PHP causados pelo uso incorreto dos ganchos (como a quantidade de parâmetros não corresponder) possam ser detectados a tempo.

resumos

O sistema de ganchos (hooks) personalizados do WooCommerce é a ponte que liga sua vasta ecologia de recursos com as necessidades individuais dos usuários.actionefilterAs diferenças fundamentais vão desde a simples compreensão do funcionamento dos ganchos (hooks) em WooCommerce até a capacidade de encontrar e utilizar prontamente os ganchos existentes, passando pela criação de ganchos personalizados para outros usuários. Cada etapa representa um grande avanço na capacidade de personalização do seu lojão virtual. Ao seguir boas práticas, como o gerenciamento de prioridades, a transmissão de parâmetros e a organização do código, você consegue desenvolver funcionalidades de comércio eletrônico robustas e estáveis. Lembre-se: o conceito central dos ganchos é “abertura para extensões, fechamento para modificações diretas no código”. Ao utilizar esse princípio, seu trabalho de desenvolvimento em WooCommerce será muito mais eficiente.

Perguntas frequentes Perguntas frequentes

Como saber se um gancho (hook) é um gancho de ação (action hook) ou um gancho de filtragem (filter hook)?

O método mais confiável é verificar o código-fonte do WooCommerce. Se o código utilizar alguma técnica ou estrutura específica…do_action( ‘hook_name’ )Então, trata-se de um “gancho de ação” (action hook); se estiver sendo utilizado…apply_filters( ‘hook_name’, $value )Então, trata-se de um “gancho de filtragem” (filter hook). Os documentos do desenvolvedor, bem como alguns plugins de busca por ganchos, também indicam o tipo específico do gancho.

Minha função personalizada não foi executada. Quais podem ser as razões?

Primeiro, verifique se a sua função já foi aprovada (ou se passou em algum teste).add_actionouadd_filterO dispositivo foi montado corretamente no gancho. Em seguida, confira se o nome do gancho está escrito corretamente, incluindo as letras maiúsculas e minúsculas. Por fim, verifique o arquivo onde o seu código está localizado (por exemplo…).functions.phpVerifique se a função foi carregada corretamente. Por fim, examine as configurações de prioridade; pode haver uma função com prioridade mais alta que está impedindo a execução do código subsequente, ou sua função pode ter sido interrompida devido a um erro.

É possível remover as funções padrão do WooCommerce que são acionadas automaticamente nos hooks (pontos de intervenção do sistema)?

Sim, pode ser usado.remove_action()eremove_filter()Funções. No entanto, isso requer muita cautela: você precisa saber o nome da função que deseja remover, os “ganchos” (hookes) aos quais ela está conectada e sua prioridade. Geralmente, é necessário…initExecute a operação de remoção após o uso do “gancho” (hook), para garantir que a função a ser removida tenha sido de fato montada (carregada no sistema). Por exemplo:remove_action( ‘woocommerce_single_product_summary’, ‘woocommerce_template_single_title’, 5 );

Qual é a melhor maneira de usar ganchos (hooks) ou de sobrescrever diretamente os arquivos de template em um subtópico (subtopic)?

Na grande maioria dos casos, o uso de ganchos (hooks) é a escolha mais adequada. Eles são mais leves, oferecem melhor compatibilidade com atualizações (quando os modelos principais do WooCommerce são atualizados, o código dos seus ganchos geralmente não é afetado) e são mais fáceis de gerenciar. Só deve-se considerar a substituição dos arquivos de modelo quando o conteúdo a ser adicionado através dos ganchos for muito complexo ou quando for necessário fazer alterações fundamentais na estrutura do modelo. Mesmo que você decida substituir o modelo, é recomendado que mantenha e utilize os ganchos originais tanto quanto possível no novo arquivo de modelo.