0

Sử dụng Action Hook trong WordPress như thế nào

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.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí