Bitte erläutern Sie, wie diese Haken funktionieren

8

Ich habe über Hooks und Aktionen gelesen und weiß, dass wenn wir sehen do_action('some_hook'), dass irgendwo add_action('some_hook', function() {...});oder eine Funktion some_hook()in einem Thema existiert functions.php.

Aber was ist es?! ::

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

Ich kann woocommerce_checkout_processund woocommerce_before_checkout_processnirgendwo in Dateien finden! Was machen Sie?

Zhi V.
quelle

Antworten:

15

Es ist möglich, dass Action-Hooks bereitgestellt werden, ohne verwendet zu werden, was hier passiert.

woocommerce_before_checkout_processund woocommerce_checkout_processsind Hooks, die von WooCommerce bereitgestellt werden, aber WooCommerce selbst fügt keinem dieser Hooks Rückruffunktionen hinzu. Sie werden bereitgestellt, damit Plugins und Themes zum Zeitpunkt des Auslösens der jeweiligen Hooks Code ausführen können.

Wenn Sie dem woocommerce_checkout_processHook eine Funktion hinzufügen möchten (zum Beispiel), fügen Sie Ihrem Theme oder Plugin den folgenden Code hinzu:

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

Dieser Code wird ausgeführt, wenn die do_action( 'woocommerce_checkout_process' );in WooCommerce aufrufende Leitung ausgeführt wird.

Dave Romsey
quelle
Ich habe ein Beispiel zum Anhängen einer Rückruffunktion hinzugefügt. Sie rufen do_actionIhren Code nicht auf (es sei denn, Sie definieren Ihren eigenen Hook, was hier nicht der Fall ist). Du würdest benutzen add_action().
Dave Romsey