Spiegare come funzionano questi ganci


8

Ho letto di ami e azioni e so che quando lo vediamo do_action('some_hook')significa che esiste un posto add_action('some_hook', function() {...});o una funzione some_hook()in un tema functions.php.

Ma cos'è?! :

Da woocommerce / Includes / class-wc-checkout.php linea # 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' ); <-----!!!

Non riesco a trovare woocommerce_checkout_processe woocommerce_before_checkout_processovunque nei file! Cosa fanno?

Risposte:


16

È possibile fornire hook di azione senza essere utilizzati, che è ciò che sta accadendo qui.

woocommerce_before_checkout_processe woocommerce_checkout_processsono hook forniti da WooCommerce, ma WooCommerce non associa le funzioni di callback a nessuno di questi hook. Sono forniti per consentire ai plug-in e ai temi di eseguire il codice nel momento in cui vengono attivati ​​i rispettivi hook.

Se desideri allegare una funzione woocommerce_checkout_processall'hook (ad esempio), aggiungi il seguente codice al tuo tema o plugin:

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

Questo codice verrà eseguito quando viene eseguita la linea che chiama do_action( 'woocommerce_checkout_process' );in WooCommerce.


Ho aggiunto un esempio di come collegare una funzione di callback. Non chiami il do_actiontuo codice (a meno che tu non stia definendo il tuo hook che non è il caso qui). Useresti add_action().
Dave Romsey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.