Câu trả lời:
Trong wp-settings.php
, WordPress trước tiên kiểm tra mọi plugin phải sử dụng (plugin trong mu-plugins
thư mục tùy chọn ) và tải những plugin đó.
Sau đó, nếu bạn đang chạy cài đặt nhiều trang, nó sẽ kiểm tra các plugin được kích hoạt mạng và tải chúng.
Sau đó, nó kiểm tra tất cả các plugin đang hoạt động khác bằng cách xem active_plugins
mục nhập của wp_options
bảng cơ sở dữ liệu và lặp qua các plugin đó. Các plugin sẽ được liệt kê theo thứ tự abc.
Đây là thứ tự WordPress tải khá nhiều thứ: http://codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request
Vấn đề là, thông thường, mỗi plugin riêng lẻ được tải theo thứ tự nào, bởi vì các plugin được viết đúng sẽ sử dụng các móc nối WordPress, cho phép bạn cắm chức năng vào các điểm cụ thể sau khi khởi động WordPress. (Các plugin được viết đúng cũng sẽ thêm tiền tố vào các chức năng và lớp của chúng để không xảy ra xung đột.)
Thông tin thêm về API plugin: http://codex.wordpress.org/Plugin_API/
Hoàn toàn phụ thuộc vào plugin. WordPress chỉ tải một tệp trong plugin, tệp thường được đặt tên the-plugin-name.php
và chứa tiêu đề, mô tả, tác giả, v.v. ở đầu. Nó tùy thuộc vào các plugin để tải phần còn lại của tập tin của mình, sử dụng require_once
và wp_enqueue_script
và không có điều gì.
apply_filters()
để tạo một hook, nhưng chạy trước một plugin sử dụng add_filter()
, thì nó vẫn hoạt động chứ? Về mặt logic, có vẻ như nó apply_filters()
đã bị hủy, vì vậy các add_filter()
cuộc gọi trong plugin thứ hai sẽ không làm gì cả. Có vấn đề gì theo thứ tự các plugin tải khi chỉ sử dụng các hook được tạo bởi plugin không?
apply_filters()
chạy. add_filter()
phải chạy trước apply_filters()
. Nếu add_filter()
trong một tệp plugin và không phải trong một chức năng khác, nó sẽ chạy trên plugins_loaded
hook thường xảy ra trước khi bạn cần apply_filters()
.
the_content
- thứ tự xuất hiện của chúng được xác định như thế nào?
Tôi thấy rằng rất hữu ích khi bao gồm hành động 'tải muộn' trong plugin của tôi chạy sau khi tất cả các plugin đã hoàn thành tải của chúng như thế này:
add_action('plugins_loaded', 'my_late_loader');
Hàm my_late_loader sau đó được khởi tạo sau tất cả các plugin khác cho phép tôi sử dụng các hook được xác định bởi các plugin khác trong hàm my_other_factor của riêng tôi được khởi tạo trong my_late_loader
/**
* Late loading function for actions that must run after all plugins
* have loaded
*/
function my_late_loader(){
add_action( 'some_hook', 'my_other_function', 10, 1);
}
Bit phức tạp (tôi biết), nhưng điều này đảm bảo rằng các hook trong các plugin khác được tạo trước khi được thêm vào bất kể thứ tự tải plugin.