Tìm hiểu về WooCommerce Hooks trong Wordpress.

Đừng quên nhấn Thích và Đăng ký thành viên để ủng hộ Uploader bạn nhé!Họ đã thiệt sự vất vả vì người dùng ~.~

LongDoTe

🖥️
Thành viên BQT
Mê Phim
1,331
76
48
Việc làm chủ WooCommerce Hooks là bước quyết định để bạn trở thành một nhà phát triển WooCommerce chuyên nghiệp.
Hooks (Móc) là cơ chế cho phép bạn chèn, thay đổi, hoặc xóa bỏ các hàm trong quá trình hoạt động của WooCommerce mà không cần chỉnh sửa các tệp cốt lõi của plugin. Điều này đảm bảo các tùy chỉnh của bạn vẫn tồn tại sau khi cập nhật.
Hooks được chia thành hai loại chính: Action Hooks (Hành động)Filter Hooks (Bộ lọc).

I. Action Hooks (Hành động)

Action Hooks cho phép bạn thực thi một chức năng tùy chỉnh tại một điểm cụ thể trong quá trình tải của WooCommerce.

1. Nguyên tắc hoạt động

  • Định nghĩa: Bạn sử dụng hàm add_action() để liên kết hàm tùy chỉnh của mình với một Action Hook do WooCommerce định nghĩa sẵn.
  • Cú pháp: add_action( 'tên_hook', 'tên_hàm_tùy_chỉnh', [ưu_tiên], [số_lượng_tham_số] );

2. Các Action Hooks Chủ chốt

WooCommerce có hàng trăm Action Hooks, nhưng một số vị trí sau đây thường được sử dụng để tùy chỉnh giao diện sản phẩm:

Trang Chi tiết Sản phẩm (Single Product Page)

Các hooks này thường được sử dụng trong tệp template content-single-product.php:

HookVị trí chèn codeƯu tiên Mặc định
woocommerce_before_single_productNgay trước mọi thứ trên trang sản phẩm.10
woocommerce_before_single_product_summaryPhía trên khu vực tóm tắt (thường là ảnh sản phẩm).10
woocommerce_single_product_summaryCHỦ CHỐT! Trong khu vực tóm tắt (Tiêu đề, Giá, Mô tả ngắn, Nút Thêm vào giỏ).10
woocommerce_after_single_product_summaryPhía dưới khu vực tóm tắt (Thường là tab Mô tả, Thông tin bổ sung, Review).10
woocommerce_after_single_productNgay sau mọi thứ trên trang sản phẩm.10

Ví dụ về Action: Thêm thông báo bảo hành

Bạn muốn thêm dòng "Bảo hành 12 tháng" ngay sau giá sản phẩm.
PHP

Mã:
function add_warranty_message() {
    echo '<p class="warranty-message">✓ Bảo hành chính hãng 12 tháng.</p>';
}
// Gắn hàm vào hook 'woocommerce_single_product_summary' với ưu tiên 25 (sau Giá và Mô tả ngắn)
add_action( 'woocommerce_single_product_summary', 'add_warranty_message', 25 );

II. Filter Hooks (Bộ lọc)

Filter Hooks cho phép bạn thay đổi dữ liệu trước khi nó được WooCommerce sử dụng hoặc hiển thị.

1. Nguyên tắc hoạt động

  • Định nghĩa: Bạn sử dụng hàm add_filter() để thay đổi giá trị của một biến (ví dụ: giá, văn bản, thuế suất) và phải trả về giá trị đã được thay đổi.
  • Cú pháp: add_filter( 'tên_hook', 'tên_hàm_tùy_chỉnh', [ưu_tiên], [số_lượng_tham_số] );

2. Các Filter Hooks Chủ chốt


HookMục đíchDữ liệu được lọc
woocommerce_get_price_htmlThay đổi định dạng hoặc nội dung hiển thị của giá sản phẩm.Chuỗi HTML giá.
woocommerce_product_tabsThêm, xóa hoặc sắp xếp lại các tab trên trang sản phẩm.Mảng các tab.
woocommerce_cart_shipping_method_full_labelThay đổi văn bản hiển thị cho phương thức vận chuyển.Chuỗi nhãn vận chuyển.
woocommerce_checkout_fieldsThay đổi, thêm hoặc xóa các trường trên trang thanh toán.Mảng các trường checkout.

Ví dụ về Filter: Thay đổi giá trị Giỏ hàng

Bạn muốn thêm một khoản phí xử lý 10.000 VNĐ vào tổng giá trị giỏ hàng (Cart Total).
PHP

Mã:
function add_handling_fee( $cart_object ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Kiểm tra xem phí đã được thêm chưa để tránh lặp
    if ( did_action( 'woocommerce_cart_loaded_from_session' ) ) {
        // Thêm phí 10000 (tên, phí)
        $cart_object->add_fee( 'Phí xử lý đơn hàng', 10000 );
    }

}
// Gắn hàm vào hook 'woocommerce_cart_calculate_fees'
add_filter( 'woocommerce_cart_calculate_fees', 'add_handling_fee', 10, 1 );

III. Tầm quan trọng của Tham số Ưu tiên (Priority)

Trong cả add_actionadd_filter, tham số thứ ba (ví dụ: 10 trong các ví dụ trên) là ưu tiên thực thi (priority).
  • Các hàm có số ưu tiên nhỏ hơn sẽ được thực thi trước.
  • Các hàm có số ưu tiên lớn hơn sẽ được thực thi sau.

Ví dụ:

Nếu Hook woocommerce_before_single_product_summary có ba hàm được gắn vào với ưu tiên là 5, 10, và 15, chúng sẽ chạy theo thứ tự: 5 -> 10 -> 15.
Trường hợp sử dụng: Nếu bạn muốn đảm bảo code của mình chạy sau một plugin khác (ví dụ: plugin đó cũng gắn vào hook đó với ưu tiên mặc định 10), bạn nên đặt ưu tiên của mình là 11 hoặc cao hơn.

IV. Kết luận và Vị trí đặt code

Tất cả các đoạn mã sử dụng Hooks này nên được đặt ở một trong hai nơi:
  1. File functions.php của Child Theme (Nếu bạn tùy chỉnh giao diện và chức năng Theme).
  2. Trong một Custom Plugin mà bạn tự tạo (Phương pháp chuyên nghiệp và sạch sẽ nhất cho các chức năng mở rộng).

Làm chủ Action và Filter Hooks là cốt lõi để duy trì một cửa hàng WooCommerce có khả năng tùy biến cao, dễ dàng bảo trì và cập nhật!
 
......BQT luôn trân trọng các bạn viết bài - Uploader........
Forum luôn vui vẻ - đón chào các bạn! Khuyến khích trao đổi và tương tác - tạo sân chơi bổ ích!
Back
Top