Không có giới hạn và không có hình phạt hiệu suất. Để hiểu lý do tại sao, bạn cần hiểu làm thế nào tất cả các hook được lưu trữ trong hệ sinh thái WP.
Trước hết bạn cần hiểu nơi tất cả các hook được lưu trữ và cách chúng thực hiện. Tất cả các hook cho bộ lọc và hành động được lưu trữ trong biến toàn cục được gọi wp_filter
, yes yes hook hook cũng được lưu trong biến này. Biến này là mảng liên kết, trong đó khóa là tên của hành động hoặc bộ lọc và giá trị là một mảng kết hợp khác. Ví dụ: hãy xem hành động 'init', ở giai đoạn này chúng ta sẽ thấy cấu trúc sau:
$wp_filter = array(
'init' => array(...),
);
Mảng phụ này có các khóa số và giá trị dưới dạng mảng. Phím số là ưu tiên của chúng tôi. Mảng, được liên kết với các phím số, chứa một danh sách các móc có cùng mức độ ưu tiên. Vì vậy, nếu chúng ta gọi add_action( 'init', 'wpse8170_my_first_init', 20 )
, sau đó gọi add_action( 'init', 'wpse8170_my_second_init', 20 )
và cuối cùng gọi add_action( 'init', 'wpse8170_my_third_init', 10 )
, ví dụ của chúng ta sẽ như sau:
$wp_filter = array(
'init' => array(
20 => array(
'wpse8170_my_first_init' => array(
'accepted_args' => 1, // the number of accepted arguments by your hook
'function' => 'wpse8170_my_first_init', // callback function
),
'wpse8170_my_second_init' => array(...),
),
10 => array(
'wpse8170_my_third_init' => array(...),
),
),
);
Bây giờ khi init
hành động được kích hoạt, tất cả các hook sẽ được sắp xếp với việc sử dụng ksort
hàm và mảng của chúng ta hiện tại:
array(
10 => array(
'wpse8170_my_third_init' => array(...),
),
20 => array(
'wpse8170_my_first_init' => array(
'accepted_args' => 1, // the number of accepted arguments by your hook
'function' => 'wpse8170_my_first_init', // callback function
),
'wpse8170_my_second_init' => array(...),
),
),
Và tất cả các hook sẽ được thực hiện trong hàng đợi này: đầu tiên 'wpse8170_my_third_init'
, sau đó 'wpse8170_my_first_init'
và cuối cùng 'wpse8170_my_second_init'
.
Vì vậy, bạn có thể thấy rằng không có giới hạn và hình phạt nào và bạn có thể sử dụng bất kỳ giá trị nào được chấp nhận làm khóa cho mảng liên quan bởi môi trường PHP của bạn.