Wordpress thêm bộ lọc

Tuy nhiên, không phải cứ sử dụng hàm trực tiếp trong hàm tệp. php của chủ đề con này có thể loại bỏ bộ lọc đã được gán sẵn vào hook trong chủ đề / plugin gốc

Lý do là vì theo cấu trúc của WordPress, các chức năng của chủ đề con được ưu tiên tải trước tiên, sau đó mới đến chủ đề gốc. Do đó khi bạn sử dụng hàm remove_filter trong chủ đề con, bạn đang loại bỏ 1 bộ lọc không tồn tại vì nó chưa tải xuống thứ tự. Đó là lý do hàm remove_filter của bạn không hoạt động

Để hàm remove_filter hoạt động chính xác, bạn phải đặt nó trong hook after_setup_theme như sau

//Remove a function from the parent theme
function remove_parent_filters[]{ //Have to do it after theme setup, because child theme functions are loaded first
	remove_filter['init', 'function_to_be_removed'];
}
add_action[ 'after_setup_theme', 'remove_parent_filters' ];

Hook after_setup_theme được sử dụng khi tải trang, sau khi chủ đề đã được tải xuống hoàn tất. Do đó khi gán remove_filter trong hook after_setup_theme, nó sẽ hoạt động chính xác. loại bỏ bộ lọc đã được gán sẵn trong chủ đề gốc

Không giới hạn khi sử dụng chủ đề Astra, nó sử dụng hàm add_filter sau để tùy biến cách hiển thị trạng thái kho hàng

add_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];

Mình không muốn Astra thay đổi cách hiển thị mặc định của Woocoomerce, nên sẽ loại bỏ bộ lọc astra_woo_product_in_stock với đoạn mã sau

function remove_parent_filters[]{ 
	remove_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
}
add_action[ 'after_setup_theme', 'remove_parent_filters' ];

You can set this đoạn code into file functions. php của chủ đề con hoặc sử dụng plugin Code Snippets

Because is done

FacebookTweetEmailIn

Nếu bài viết của mình mang đến thông tin, kiến ​​thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Thank you

MỜI BIA

Bài viết liên quan

Loại bỏ hook hành động hoặc hook filter được gán sẵn trong class

Thiết lập tính năng thương hiệu sản phẩm [product brand] cho Woocoommece

Hiển thị Loại bài đăng tùy chỉnh trong trang kết quả tìm kiếm của WordPress

Ẩn phương thức giao hàng của Woocommerce tùy điều kiện thiết lập

Đổi máy chủ cho website WordPress bằng SSL Let’s Encrypt không bị downtime

Xoá bỏ hoặc tùy biến bộ đếm sản phẩm [product count] trên trang Shop của Woocommerce

Lưu ý. Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu

Trong bài này chúng ta sẽ tìm hiểu hook là gì, action là gì và filter là gì trong WordPress, đây là ba khái niệm bạn sẽ gặp rất nhiều trong quá trình học lập trình WordPress nâng cao như làm theme và plugin

Bài viết này đã được đăng tại freetuts. net , không được sao chép dưới mọi hình thức.

Bạn đã từng nghe về khái niệm thiết lập hướng sự kiện trong các Framework như Zend, Laravel, Phalcon rồi phải không? . Vậy thì trong WordPress có tồn tại khái niệm này không?

Thực ra WordPress chỉ là một phần mềm chạy trên web nền nên sự kiện của nó chính là các điểm nhấn trong quá trình biên dịch mã nguồn và bạn muốn có thể truy cập vào các điểm nhấn đó thì phải sử dụng các API của móc

Hãy đọc bài viết WordPress API nếu bạn chưa biết về nó

Bài viết này đã được đăng tại [free tuts. net]

1. Hooks là gì?

Trong WordPress, hooks là danh sách các điểm nhấn [điểm móc] nằm trong hệ thống mã nguồn của WordPress, tại đây bạn có thể bổ sung các đoạn mã thông qua hai hàm add_action và add_filter mà WordPress đã cung cấp sẵn. Chúng ta có hai nhóm móc chính đó là bộ lọc và hành động

  • Bộ lọc là các điểm móc liên quan đến xử lý nội dung
  • Hành động là các điểm móc liên quan đến xử lý hành động

Ví dụ

[1] Bạn muốn kiểm tra loại bỏ các đường liên kết mà người quản trị đã cố gắng thêm vào khi sửa bài viết thì sẽ sử dụng hook có tên là save_post và nó thuộc nhóm hành động

add_action['save_post', 'function_name', 10, 2];

[2] Bạn muốn khi hiển thị nội dung bài viết ra bên ngoài giao diện người dùng thì thêm một dòng chữ ở vị trí cuối cùng của nội dung thì có thể sử dụng hook có tên là the_content và bộ lọc thuộc nhóm của nó

add_filter[ 'the_content', 'function_name', 1 ];

Mỗi hook sẽ có các tham số truyền vào nhau, nên để chắc chắn thì trước khi sử dụng hook nào các bạn hãy lên trang codex để tham khảo nhé. Ví dụ với hook the_title thì sẽ có hai tham số truyền vào đó là

add_action['save_post', 'function_name', 10, 2];
2 và
add_filter[ 'the_content', 'function_name', 1 ];
0

Trường hợp trang codex không giải thích rõ về tham số thì bạn hãy tự mình debug bằng cách truyền tham số vào hàm

add_filter[ 'the_content', 'function_name', 1 ];
1 và kết hợp với hàm var_dump để vào xem nội dung của tham số đó

Trước khi tìm hiểu rõ hơn về action và filter, bạn tạo cho mình hai tệp

add_filter[ 'the_content', 'function_name', 1 ];
2 và
add_filter[ 'the_content', 'function_name', 1 ];
3 nằm trong thư mục bao gồm của plugin có tên là wp-learn. Cấu trúc này mình đã tạo trong bài viết các bước tạo plugin WordPress, bạn có thể đọc nó nếu chưa biết

Tiếp theo bạn tạo tệp là

add_filter[ 'the_content', 'function_name', 1 ];
4 và bổ sung hai đoạn mã yêu cầu hai tệp đó vào như sau

add_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
0

Xem bài yêu cầu trong PHP nếu chưa biết hàm này

2. Lọc WordPress là gì?

Trong bộ lọc WordPress, các hook được ví như một bộ lọc vì các hook này liên quan đến xử lý nội dung dữ liệu. WordPress có rất nhiều loại bộ lọc và bạn có thể xem tại đây

Đặc điểm chung của bộ lọc này là mỗi hook sẽ trả về một nội dung nào đó và bạn sử dụng hàm add_filter để bổ sung .

Hàm

add_filter[ 'the_content', 'function_name', 1 ];
5 có cấu trúc như sau

add_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
2

in which

  • thẻ $. is name of filter hook
  • $function_to_add là hàm gọi lại muốn bổ sung vào
    add_filter[ 'the_content', 'function_name', 1 ];
    6
  • $priority là mức độ ưu tiên của hàm gọi lại, mức độ ưu tiên ngày càng cao thì hàm gọi lại đó sẽ được gọi trước. default value is 10
  • $accepted_args là tổng số tham số tham gia vào hàm gọi lại và không được thông qua quá tổng số hook. default value is 1

Ví dụ. Giả sử mình muốn khi đưa ra tiêu đề của các bài viết thì bổ sung thêm từ

add_filter[ 'the_content', 'function_name', 1 ];
7 ở đầu thì làm như sau

You open file

add_filter[ 'the_content', 'function_name', 1 ];
2 up and code as after

add_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
6

in which

  • the_title là hook filter dùng để lấy tiêu đề bài viết
  • add_string_to_title là tên của hàm muốn bổ sung vào hook
    add_filter[ 'the_content', 'function_name', 1 ];
    9

Hook

add_filter[ 'the_content', 'function_name', 1 ];
9 sẽ truyền tiêu đề của bài viết vào hàm
add_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
01 và thực thi nó, sau đó lấy kết quả của hàm này trả về làm đề mới

Luồng xử lý như sau. Gả hàm

add_filter[ 'the_content', 'function_name', 1 ];
9 có nội dung như sau

function remove_parent_filters[]{ 
	remove_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
}
add_action[ 'after_setup_theme', 'remove_parent_filters' ];
1

Lúc này ta sử dụng hàm

add_filter[ 'the_content', 'function_name', 1 ];
5 để bổ sung hàm gọi lại
add_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
01 vào
add_filter[ 'the_content', 'function_name', 1 ];
9 thì nó sẽ hoạt động ở dạng như sau

function remove_parent_filters[]{ 
	remove_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
}
add_action[ 'after_setup_theme', 'remove_parent_filters' ];
5

Do đó thực chất khi bạn bổ sung một hành động nào đó vào bộ lọc thì tức là bạn bổ sung một đoạn mã xử lý trước khi bộ lọc đó trả về kết quả

3. Action WordPress là gì?

Action hooks là danh sách các hook liên quan đến xử lý sự kiện. Ví dụ khi bạn lưu một bài viết thì ta có hook save_post, khi người dùng bình luận thì có hook comment_post

Tất cả các hook đều quan trọng vì nó giúp chúng ta có thể thâm nhập vào hệ thống lõi mà không cần phải phá mã nguồn của WordPress. Ví dụ bạn muốn khi người dùng bình luận thì gửi email thông báo thì bạn sẽ viết một hàm gửi thư và đưa nó vào hook comment_post

Ta sử dụng hàm

add_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
06 để bổ sung hành động vào Action Hook. Hàm này có các tham số như sau

function remove_parent_filters[]{ 
	remove_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
}
add_action[ 'after_setup_theme', 'remove_parent_filters' ];
7

in which

  • thẻ $. is name of filter hook
  • $function_to_add là hàm gọi lại muốn bổ sung vào
    add_filter[ 'the_content', 'function_name', 1 ];
    6
  • $priority là mức độ ưu tiên của hàm gọi lại, mức độ ưu tiên ngày càng cao thì hàm gọi lại đó sẽ được gọi trước. default value is 10
  • $accepted_args là tổng số tham số tham gia vào hàm gọi lại và không được thông qua quá tổng số hook. default value is 1

Ví du. Khi lưu bài viết nếu bài viết ở trạng thái công khai thì hãy gửi email đến cho admin

Action hook lưu bài viết là

add_filter[ 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ];
08, hook này có ba tham số truyền vào đó là

  • $id. id bài viết đang lưu hoặc mới bổ sung
  • $bài đăng. toàn bộ nội dung như tiêu đề, nội dung của bài viết
  • $is_update. if TRUE tức hành động lưu bài đăng này là cập nhật hành động, đảo ngược lại là hành động chèn

Ok bây giờ bạn mở tệp

add_filter[ 'the_content', 'function_name', 1 ];
3 lên và đặt mã như sau

add_action['save_post', 'function_name', 10, 2];
1

Too menus must don't you. ]

4. Lời kết

Tóm lại, qua bài này bạn đã học được những kiến ​​thức như sau

  • Hook WordPress chính là những điểm móc nằm trong hệ thống WordPress mà qua đó ta có thể xâm nhập vào mà không cần phải thay đổi core
  • Filter WordPress là những hook được sử dụng để xử lý dữ liệu nội dung trong WordPress
  • Action WordPress là những hook được sử dụng để xử lý hành động trong WordPress

Bài này tương đối khó hiểu, vì đây chính là nội dung quan trọng và quan trọng nhất mà bạn phải biết khi lập trình WordPress. Bạn phải hiểu nguyên lý hoạt động của nó thì sau này mới xây dựng được plugin và theme theo ý mình được

Chủ Đề