Trong WordPress
, việc sử dụng thành thạo các setting, các câu lệnh để query post, post type….thì các bạn cần phải biết đến một cái mà rất hay sử dụng nhất là với các bạn viết plugin hay feature cho WordPress
rất hay sử dụng đó là Action Hook
. Để hiểu rõ hơn về cơ chế hook của WordPress
, các bạn có thể tham khảo thêm ở đây. Còn trong bài hôm nay mình sẽ hướng dẫn các ban sử dụng Action Hook
như thế nào.
Action Hook là gì?
Như trong link tham khảo mình đã nói ở trên. Mình cũng định nghĩa sơ qua về Action Hook
. Đơn giản nó được sử dụng như một Action để có thể add thêm Action vào một chu kì nhất định.
Ví dụ bạn cần add một đoạn code để filter lại title của WordPress sau khi đã load xong mà k muốn bị ảnh hưởng. Bạn sẽ sử dụng Action Hook
Cách sử dụng một Action Hook
Trước tiên chúng ta sẽ phải tạo ra một function chứa đoạn script PHP cần chạy, sau đó 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' )
Ví dụ như 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.
Note: Bạn phải viết đoạn function và đoạn hook ở trong file functions.php
Các bạn có thể xem cấu trúc của hàm add_action
tại đây
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 một action với tên test_action. Khi bạn muốn thực thi action này ở template chỉ cần đặt
<?php do_action( 'test_action' ); ?>
Lấy một ví dụ đơn giản là khi chúng ta là web với một shop bán hàng, chúng ta hay 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' ); ?>
Như vậy là mình đã giới thiệu xong cho các bạn những phần cơ bản của Action Hook trong WordPress.
Lời kết
Với các bạn đã code WordPress thì chắc không lạ gì với Action Hook. Nhưng với các bạn mới sử dụng và làm quen với WordPress thì mình mong các bạn sẽ nắm được và sử dụng thành thạo vì trong các framework rất nhiều phần sử dụng Action này.