Câu hỏi của tôi là ... chính xác trong số này wp-load.php
tệp nào mà mã này cần phải có?
Tất cả chức năng chính của WordPress. Điều này bao gồm các tệp chủ đề, tất cả các tệp của plugin hoạt động, v.v. NHƯNG tải WordPress theo cách này không phân tích cú pháp URL được yêu cầu và không chạy truy vấn WordPress (bằng cách khởi tạo đối tượng WP, cũng như đối tượng WP_Query) .
Bằng cách nhìn vào nó, tất cả tôi hiểu là nó tải lõi file wordpress rất quan trọng cho các trang web để được chạy một cách chính xác (functions.php
, wp-settings.php
, wp-config.php
vv ...)
Có, bạn' đã hiểu chính xác.
Thực tế là plugin chạy đã có nghĩa là tải tệp wp-load.php?
Nếu mã plugin được gọi bởi WordPress (ví dụ để hiển thị trang quản trị hoặc tệp được chèn vào tệp plugin ban đầu) - thì có nghĩa là wp-load.php
đã được tải.
Đôi khi, các plugin yêu cầu trực tiếp các tệp đơn lẻ (ví dụ http://example.com/wp-content/plugins/my-plugin/sample.php
), thay vì một số trang hỗ trợ WordPress (ví dụ: http://example.com/?my_plugin_action=sample
hoặc http://example.com/wp-admin/admin-ajax.php
).
Xem cách URL đầu tiên tham chiếu đến tệp cụ thể trong thư mục plugin my-plugin
và thư mục thứ hai chuyển đến trang chủ của trang web có đối số truy vấn cụ thể được thêm vào hoặc ví dụ thứ ba, trong đó tệp được tham chiếu là admin-ajax.php
wp-admin
thư mục - đây là một tập tin đặc biệt, mà làm cho nó dễ dàng cho các plugin để thực hiện yêu cầu AJAX (tập tin này cũng tải lõi WordPress và cháy một số móc hành động). Trong trường hợp tham chiếu đầu tiên, nếu plugin muốn sử dụng một số chức năng WordPress (để tham khảo cơ sở dữ liệu, thao tác bài đăng, v.v.), cần tải các tệp lõi WordPress bằng cách bao gồm wp-load.php
.
Cũng là một nguồn tài nguyên hoàn toàn vì nó bao gồm rất nhiều tệp có thể bao gồm các tệp khác và nó giống như một vòng lặp vô tận các tệp được yêu cầu, mỗi tệp khác, đang được tải hai lần .. (hoặc thậm chí hơn nếu các plugin khác sử dụng loại phương pháp quá)
Lưu ý _once
gia require_once(...
- điều này nói với PHP để bao gồm các tập tin chỉnếu nó chưa được bao gồm rồi. Do đó không có xung đột nào xảy ra, và không quá nhiều bộ nhớ sẽ được PHP sử dụng. Mặc dù - nếu bạn đang ở trong một bối cảnh mà WordPress đã được bắt đầu, bạn không nên gọi hàm require
.
Vì vậy, về cơ bản tác giả plugin mong đợi một số yêu cầu được thực hiện đối với tệp plugin mà bạn tìm thấy mã này. Vì tác giả muốn sử dụng chức năng WordPress trong tệp này, anh ta gọi tệp wp-load.php
để tải các chức năng chính. Tôi giả sử, điều này được thực hiện để giảm tải trên máy chủ, mặc dù với một vài móc chạy trên móc hành động plugins_loaded
và thông số tùy chỉnh $_GET
được thêm vào url trang chủ, kết quả vẫn phải đẹp gần.
Cá nhân tôi thích tùy chọn thứ hai, nhưng như tôi đã nói, bao gồm wp-load.php
sẽ ngăn WordPress chạy một số nội dung phức tạp (phân tích URL và truy vấn cơ sở dữ liệu/ies).
Nếu vẫn còn điều gì đó, bạn không hoàn toàn hiểu về điều đó - hãy đăng nhận xét ở đây và tôi sẽ cố giải thích thêm.
Câu trả lời tuyệt vời, chi tiết! Cảm ơn bạn rất nhiều! :) – Asaf