@toscho để lại một bình luận cho câu trả lời này khiến tôi phải suy nghĩ lại. Chúng ta nên có bao nhiêu niềm tin trong phạm vi toàn cầu, đặc biệt liên quan đến bài đăng trên toàn cầu như thế $post
nào?
Vậy thì sao? Biến toàn cục có thể được ghi đè từ mọi người trước khi séc của bạn chạy. Đó là điểm của các biến toàn cầu: truy cập toàn cầu.
$post
ví dụ, chắc chắn là một trong những thế giới chủ yếu được sửa đổi trong chính chủ đề hoặc bởi các plugin. Tuy nhiên, nó cũng được sử dụng phổ biến nhất trên toàn cầu trong các ứng dụng khác trong một mẫu nhất định để thiết lập các bài đăng liên quan.
Từ việc trả lời (và bình luận) một số bài đăng có vấn đề cụ thể do sử dụng truy vấn tùy chỉnh , thực sự nổi bật là hầu hết các vấn đề được gây ra do truy vấn tùy chỉnh không được đặt lại (truy vấn tùy chỉnh thay đổi toàn cục do truy vấn chính đặt).
Từ điều này, rõ ràng $post
là không đáng tin cậy. Bất kỳ đoạn mã được viết kém nào sử dụng truy vấn tùy chỉnh đều có thể thay đổi $post
toàn cục, do đó sẽ phá vỡ một cái gì đó (như các bài đăng liên quan).
Chỉ một số ít các nhà phát triển WordPress thực sự đủ hiểu biết trong hoạt động bên trong cốt lõi và biết những gì nên tránh và những gì không. Số lượng người dùng lớn hơn không biết lõi WordPress hoạt động như thế nào.
Họ chỉ cần tải xuống một chủ đề và cài đặt các plugin để làm những gì cần thiết hoặc thậm chí chỉ cần sao chép mã từ một hướng dẫn. Nói rằng họ cài đặt một plugin viết kém, phá vỡ các bài đăng liên quan của họ trên một bài đăng của họ, làm sao họ biết điều gì đã gây ra điều đó? Họ sẽ có thể tự sắp xếp điều đó hay họ sẽ là người thứ trăm viết email cho tác giả chủ đề về vấn đề này, hoặc đăng câu hỏi lên trang web này?
Câu hỏi của tôi: Làm thế nào bạn có thể bảo vệ chống lại các vấn đề như vậy gây ra bởi mã nhập khẩu khác khi một lượt thích toàn cầu $post
không đáng tin cậy như vậy? Chúng ta có nên sử dụng toàn cầu như thế $post
nào không? Các lựa chọn thay thế là gì?
Chỉ để chia sẻ tâm trí của tôi ở đây trước khi tôi kết luận: Tôi cũng đã nghĩ (và cũng thấy trong một số chủ đề và plugin) hoặc sử dụng wp_reset_postdata()
hoặc wp_reset_query()
trước khi sử dụng $post
, để đảm bảo rằng toàn cầu đang được đặt lại cho truy vấn chính $post
. Nhưng tại sao tôi nên thổi phồng mã của mình trong chủ đề của mình vì người khác đã không mã hóa đúng plugin của anh ấy? Và nếu ai đó đã thiết lập lại đúng truy vấn tùy chỉnh của họ, thao tác này sẽ chạy lần thứ hai không cần thiết, điều này không tốt.
Phương pháp thứ hai tôi nghĩ đến là sử dụng $wp_query
và sau đó sử dụng các phương thức của nó, đại loại như thế $wp_query->post
.
Bất kỳ suy nghĩ về điều này sẽ được đánh giá cao.