Có điều kiện if ( isset($wp_filter['all']) ) {
bạn có thể tìm thấy ngay trong các hàm tạo móc này:
apply_filters
apply_filters_ref_array
do_action
do_action_ref_array
Sự khác biệt giữa chúng là số lượng đối số được gửi. Hoặc chúng ta cần nhiều đối số, do đó ref_array
hoặc đối số duy nhất. Sự khác biệt "hành động so với bộ lọc" là đơn giản, hành động có thể thực hiện bất kỳ chức năng / hành động nào và tên bộ lọc thường được dành riêng cho các chức năng lấy dữ liệu chuỗi và trả về dữ liệu đó được lọc.
OK, đây là cách bạn tạo móc. Và hook có tên và bạn có thể câu nhiều tên hàm trên cùng một tên hook (đọc: tag).
Nhưng một khi bạn xác định tất cả các hàm được liên kết với các hook cụ thể, bạn cần lưu trữ ở đâu đó tất cả các tên hook và tên hàm liên quan. Đây là lý do tại sao chúng tôi ave global $wp_filter
trong WordPress. Nếu bạn xuất biến đó, bạn sẽ nhận được một cái gì đó như ...
Array
(
[pre_term_name] => Array
(
[10] => Array
(
[sanitize_text_field] => Array
(
[function] => sanitize_text_field
[accepted_args] => 1
)
[wp_filter_kses] => Array
(
[function] => wp_filter_kses
[accepted_args] => 1
)
)
[30] => Array
(
[_wp_specialchars] => Array
(
[function] => _wp_specialchars
[accepted_args] => 1
)
)
)
Vâng, chúng ta không tranh luận về tên của biến này. Cá nhân, tôi sẽ gọi nó là khác nhau, có thể xảy ra $wp_hooks
vì tên này không được sử dụng. Tuy nhiên, nếu chúng tôi quay lại lịch sử, chúng tôi sẽ tìm thấy do_action
kể từ khi @since 1.2.0
và apply_filters
được @since 0.71
(phát hành ngày 9 tháng 6 năm 2003.). Điều đó cung cấp cho bạn lời giải thích khá tốt tại sao nó được gọi $wp_filter
. Rất có thể là do các bộ lọc được giới thiệu đầu tiên trong WordPress. Sau đó họ giới thiệu hành động.
Chỉ cần xây dựng được nói từ @TheDeadMedic ...
add_action ('tất cả', 'bất cứ điều gì') sẽ có nghĩa là bất cứ điều gì kích hoạt cho mọi do_action, bất kể tên của hook.
Tôi nêu câu hỏi tại sao chúng ta cần $wp_filter['all']
? Chỉ là một vài ví dụ. Hướng nội, kiểm tra và có thể có nhiều tính năng bên trong hệ thống hơn trong các phiên bản WordPress trong tương lai.