Por favor, explique como esses ganchos funcionam


8

Eu li sobre ganchos e ações e sei que quando a vemos do_action('some_hook')significa que existe algum lugar add_action('some_hook', function() {...});ou função some_hook()em um tema functions.php.

Mas o que é isso?! :

Na linha woocommerce / includes / class-wc-checkout.php # 943:

public function process_checkout() {
    try {
        /////////////
        do_action( 'woocommerce_before_checkout_process' ); <----!!!

        if ( WC()->cart->is_empty() ) {
            throw new Exception( sprintf( __( 'Sorry, your session has expired. <a href="%s" class="wc-backward">Return to shop</a>', 'woocommerce' ), esc_url( wc_get_page_permalink( 'shop' ) ) ) );
        }

        do_action( 'woocommerce_checkout_process' ); <-----!!!

Não consigo encontrar woocommerce_checkout_processe woocommerce_before_checkout_processem nenhum lugar nos arquivos! O que eles fazem?

Respostas:


16

É possível que ganchos de ação sejam fornecidos sem serem usados, e é isso que está acontecendo aqui.

woocommerce_before_checkout_processe woocommerce_checkout_processsão ganchos fornecidos pelo WooCommerce, mas o WooCommerce não anexa funções de retorno de chamada a nenhum desses ganchos. Eles são fornecidos para permitir que plugins e temas executem código no momento em que os respectivos ganchos são acionados.

Se você deseja anexar uma função ao woocommerce_checkout_processgancho (por exemplo), adicione o seguinte código ao seu tema ou plugin:

add_action( 'woocommerce_checkout_process', 'wpse_woocommerce_checkout_process' );
function wpse_woocommerce_checkout_process() {
    // Do something...
}

Este código será executado quando a linha que chama do_action( 'woocommerce_checkout_process' );no WooCommerce for executada.


Adicionei um exemplo de como anexar uma função de retorno de chamada. Você não chama do_actionseu código (a menos que esteja definindo seu próprio gancho, o que não é o caso aqui). Você usaria add_action().
Dave Romsey
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.