Os ganchos no WordPress permitem essencialmente que você altere ou adicione código sem editar os arquivos principais. Eles são usados extensivamente em WordPress e WooCommerce e são muito úteis para desenvolvedores.
Existem dois tipos de gancho: ações (actions) e filtros (filters).
- Os ganchos de ação permitem inserir código personalizado em vários pontos (onde quer que o gancho seja executado).
- Os ganchos de filtro permitem que você manipule e retorne uma variável pela qual ele passa (por exemplo, o preço de um produto).
Usando ganchos
Se você usar um gancho para adicionar ou manipular código, poderá adicionar seu código personalizado de várias maneiras:
- Para um arquivo de tema filho personalizado ou diretamente em seu arquivo
functions.php
. - Usando um plug-in, como trechos de código.
Usando ganchos de ação (action)
Para executar seu próprio código, você se conecta usando o gancho de ação do_action('nome_da_action');
. Aqui é onde colocar seu código:
add_action( 'nomeda_action', 'nomeda_funcao' ); function nomeda_funcao() { // Seu código }
Usando ganchos de filtro (filter)
Os ganchos de filtro são chamados em todo o código usando apply_filter( 'nomedo_filter', $variavel );
. Para manipular a variável passada, você pode fazer algo como o seguinte:
add_filter( 'nomedo_filter', 'nomeda_funcao' ); function nomeda_funcao( $variavel ) { // Seu código return $variavel; }
Com filtros, você deve retornar um valor.
Guia Visual Hook Woocommerce
Você pode utilizar o site abaixo para identificar de forma visual o nome do gancho (Hook) que você ira utilizar.
Exemplos
Neste exemplo, o código é definido para exibir o valor parcelado em 3x sem juros para todos os produtos.
// Exibe na página de produto unico - hook "woocommerce_single_product_summary" function action_woo_add1_3x_parcela( ) { global $post, $product; $valor = $product->get_price() / 3; $valor_parcelado = number_format($valor,2,",","."); if (!empty($valor_parcelado)) { echo '<p class="price-3x"><strong>3x</strong> de <strong>R$ '.$valor_parcelado.'</strong> sem juros</p>'; } }; add_action( 'woocommerce_single_product_summary', 'action_woo_add1_3x_parcela', 10, 0 ); // Exibe no loop de produtos - hook "woocommerce_shop_loop_item_title" function action_woo_add2_3x_parcela( ) { global $post, $product; $valor = $product->get_price() / 3; $valor_parcelado = number_format($valor,2,",","."); if (!empty($valor_parcelado)) { echo '<p class="price-3x"><strong>3x</strong> de <strong>R$ '.$valor_parcelado.'</strong> sem juros</p>'; } }; add_action( 'woocommerce_shop_loop_item_title', 'action_woo_add2_3x_parcela', 10, 0 );
Neste exemplo, o código é definido para redirecionar o botão “Voltar para a Loja” encontrado no carrinho para uma categoria que lista os produtos à venda em http: //exemplo.url/categoria/especial/.
/** * Altera o URL de redirecionamento para o botão Voltar para a Loja no carrinho. */ function carrinhovazio_redirect_url() { return 'http: //exemplo.url/categoria/especial/'; } add_filter( 'woocommerce_return_to_shop_redirect', 'carrinhovazio_redirect_url', 10 );
Lá, podemos ver que a prioridade está definida como 10. Este é o padrão típico para funções e scripts WooCommerce, portanto, pode não ser suficiente para substituir a funcionalidade desse botão.
Em vez disso, podemos alterar a prioridade para qualquer número maior que 10. Embora 11 funcione, a prática recomendada dita que usemos incrementos de dez, portanto, 20, 30 e assim por diante.
Neste exemplo vamos tornar o número de telefone não obrigatório.
add_filter( 'woocommerce_billing_fields', 'wc_npr_filter_phone', 10, 1 ); function wc_npr_filter_phone( $address_fields ) { $address_fields['billing_phone']['required'] = false; return $address_fields; }
Neste outro exemplo vamos adicionar campos personalizados a e-mails. Para adicionar um valor de campo personalizado a e-mails WooCommerce – um e-mail de pedido concluído, por exemplo – use o seguinte snippet:
/* To use: 1. Adicione este snippet ao arquivo functions.php do seu tema 2. Altere os nomes das meta-chaves no snippet 3. Crie um campo personalizado na postagem do pedido - por exemplo, chave = "Código de acompanhamento" valor = abcdefg 4. Na próxima atualização de status, ou durante qualquer outro evento que envie um e-mail ao usuário, ele verá este campo em seu e-mail */ add_filter('woocommerce_email_order_meta_keys', 'my_custom_order_meta_keys'); function my_custom_order_meta_keys( $keys ) { $keys[] = 'Tracking Code'; // Isso procurará um campo personalizado chamado 'Código de acompanhamento' e o adicionará aos e-mails return $ keys ; }
Documentação API
Para obter uma visão abrangente da API WooCommerce, consulte a documentação da API .
Filtros e ganchos de ação WooCommerce disponíveis
Para obter detalhes sobre o que os ganchos de ação e filtros fazem, consulte a Referência de ganchos WooCommerce .