Tolong jelaskan bagaimana kait ini bekerja

8

Saya telah membaca tentang kait dan tindakan dan saya tahu bahwa ketika kita melihatnya do_action('some_hook')berarti ada suatu tempat add_action('some_hook', function() {...});atau fungsi some_hook()dalam tema functions.php.

Tapi apa itu ?! :

Dari woocommerce / include / class-wc-checkout.php baris # 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' ); <-----!!!

Saya tidak dapat menemukan woocommerce_checkout_processdan woocommerce_before_checkout_processdi mana pun di file! Apa yang mereka lakukan?

Zhi V
sumber

Jawaban:

16

Mungkin saja kait tindakan disediakan tanpa digunakan, yang terjadi di sini.

woocommerce_before_checkout_processdan woocommerce_checkout_processkait disediakan oleh WooCommerce, tetapi WooCommerce tidak dengan sendirinya melampirkan fungsi panggilan balik ke salah satu dari kait ini. Mereka disediakan untuk memungkinkan plugin dan tema untuk menjalankan kode pada saat kait masing-masing terpicu.

Jika Anda ingin melampirkan fungsi ke woocommerce_checkout_processhook (misalnya), Anda akan menambahkan kode berikut ke tema atau plugin Anda:

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

Kode ini akan berjalan ketika panggilan baris do_action( 'woocommerce_checkout_process' );di WooCommerce dieksekusi.

Dave Romsey
sumber
Saya menambahkan contoh cara melampirkan fungsi panggilan balik. Anda tidak memanggil do_actionkode Anda (kecuali jika Anda mendefinisikan kait Anda sendiri yang tidak terjadi di sini). Anda akan menggunakan add_action().
Dave Romsey