これらのフックの仕組みを説明してください


8

私はフックとアクションについて読みました、そしてdo_action('some_hook')それを見たとき、どこかにadd_action('some_hook', function() {...});または機能some_hook()がテーマのに存在することを意味することを知っていfunctions.phpます。

しかし、それは何ですか?!:

woocommerce /含ん/クラス-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' ); <-----!!!

私は見つけることができないwoocommerce_checkout_processと、woocommerce_before_checkout_processファイル内のどこにでも!彼らは何をしますか?

回答:


16

アクションフックを使用せずに提供することが可能です。これがここで行われていることです。

woocommerce_before_checkout_processおよびwoocommerce_checkout_processはWooCommerceによって提供されるフックですが、WooCommerce自体はこれらのフックのどちらにもコールバック関数をアタッチしません。これらは、それぞれのフックがトリガーされたときにプラグインとテーマがコードを実行できるようにするために提供されています。

woocommerce_checkout_processたとえば、フックに関数をアタッチする場合は、次のコードをテーマまたはプラグインに追加します。

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

ライン呼び出したときにこのコードが実行されますdo_action( 'woocommerce_checkout_process' );WooCommerce内が実行されます。


コールバック関数をアタッチする方法の例を追加しました。do_action(ここではそうではない独自のフックを定義している場合を除いて)コードで呼び出しません。使用しますadd_action()
Dave Romsey、2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.