Sử dụng Action Hook trong WordPress

(Ngày: 06/01/2020)
Action Hook là gì và nó được sử dụng như thế nào trong WordPress. Hãy cùng tìm hiểu ngay trong bài viết dưới đây.

Action Hook là gì?

Action Hook được hiểu đơn giản là như một Action để có thể add thêm Action vào một chi kỳ nhất định. Chẳng hạn, bạn cần add một đoạn code để filter lại title của WordPress sau khi đã load xong mà không muốn bị ảnh hưởng thì hãy sử dụng Action Hook.

Action Hook và cách sử dụng của nó

Đầu tiên, chúng ta cần phải tạo ra một function chứa đoạn script PHP cần chạy.

Tiếp theo đó sử dụng hàm add_action() trong WordPress để nối cái function của mình vào cái action hook cần cho nó nối vào.

Ví dụ:

function basic_hook(){

    // Your code php

}

add_action( 'init', 'basic_hook' )

Ở function trên, chúng ta sẽ tạo ra một function là basic_hook và sau đó sẽ sử dụng hàm add_action để add nó vào hook init.

Chú ý: Bạn phải viết đoạn function và đoạn hook ở trong file function.php.

Action Hook được tạo ra thế nào?

Action Hook được tạo ra bởi hàm do_action. Nó là một hàm để đặt điểm gọi Action trong template.

Ví dụ: Bạn đã add với tên test_action và khi bạn muốn thực thi action này ở template chỉ cần đặt:

<?php

    do_action( 'test_action' );

?>

Nếu là web để bán hàng, bạn có thể sử dụng plugin WooCommerce để show sản phẩm.

Function Callback

<?php

    if ( ! function_exists( 'woocommerce_template_loop_add_to_cart' ) ) {

 

      /**

       * Get the add to cart template for the loop.

       *

       * @subpackage   Loop

       */

      function woocommerce_template_loop_add_to_cart( $args = array() ) {

           global $product;

 

           if ( $product ) {

                 $defaults = array(

                      'quantity' => 1,

                      'class'    => implode( ' ', array_filter( array(

                                 'button',

                                 'product_type_' . $product->product_type,

                                 $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',

                                 $product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : ''

                      ) ) )

                 );

 

                 $args = apply_filters( 'woocommerce_loop_add_to_cart_args', wp_parse_args( $args, $defaults ), $product );

 

                 wc_get_template( 'loop/add-to-cart.php', $args );

           }

      }

}

?>

Add Action Hook

<?php

    add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );

?>

Do Action

<?php

do_action( 'woocommerce_after_shop_loop_item' );

?>

Chúc bạn thành công.

>> Xem thêm: Website WordPress bị chậm, nguyên nhân do đâu?

viblo.asia