web-dev-qa-db-fra.com

Veuillez expliquer comment fonctionnent ces crochets

J'ai lu sur les points d'ancrage et les actions et je sais que lorsque nous voyons do_action('some_hook'), cela signifie que quelque part add_action('some_hook', function() {...}); ou fonction some_hook() existe dans le functions.php d'un thème.

Mais qu'est-ce que c'est?! :

De woocommerce/includes/class-wc-checkout.php ligne # 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' ); <-----!!!

Je ne trouve pas woocommerce_checkout_process et woocommerce_before_checkout_process nulle part dans les fichiers! Que font-ils?

7
Zhi V

Il est possible que des crochets d'action soient fournis sans être utilisés, c'est ce qui se passe ici.

woocommerce_before_checkout_process et woocommerce_checkout_process sont des hooks fournis par WooCommerce, mais WooCommerce n'attache pas lui-même de fonctions de rappel à ces hooks. Ils sont fournis pour permettre aux plugins et aux thèmes d'exécuter du code au moment du déclenchement des points d'ancrage respectifs.

Si vous souhaitez attacher une fonction au hook woocommerce_checkout_process (par exemple), vous ajouterez le code suivant à votre thème ou à votre plugin:

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

Ce code sera exécuté lorsque la ligne appelant do_action( 'woocommerce_checkout_process' ); dans WooCommerce sera exécutée.

14
Dave Romsey