Mặc dù không có câu trả lời 'chính thức', câu hỏi này vẫn còn khá phổ biến, vì vậy một năm sau tôi sẽ đăng những suy nghĩ vững chắc của mình về điều này.
Điều dẫn đến câu hỏi này là kinh nghiệm về mã làm việc ở một số nơi chứ không phải ở những nơi khác. Chẳng hạn, tại sao tôi phải bọc mã trong một hàm trong hàm.php thay vì chỉ đặt nó ở đó một cách lỏng lẻo, trong khi tôi có thể giữ nó lỏng lẻo trong một tệp mẫu? Cảm giác như thể có một số khác biệt cơ bản trong cách WordPress xử lý mã ở những nơi khác nhau.
Nhưng tất nhiên, điều đó không chính xác. PHP là PHP và WordPress chỉ đơn giản là đang theo đuổi trên đường đi, từng dòng một.
Sự khác biệt chính, như tôi đã viết trong câu hỏi ban đầu của mình và như Krzysiek và những người khác đã khẳng định, là thứ tự tải. Nhưng thứ tự tải trong WordPress là tất cả.
Hàm.php của một chủ đề được tải, nói một cách tương đối, từ rất sớm. Nó vẫn còn rất nhiều trong giai đoạn chuẩn bị. Các chức năng chính của WordPress đã sẵn sàng, chẳng hạn như add_action (), cũng như các plugin và toàn cầu. Nhưng nó chưa sẵn sàng để bạn bắt đầu làm mọi thứ. Đầu ra trang chưa được viết, vòng lặp chính không chạy, v.v.
Vì vậy, nếu bạn đặt một dòng mã lỏng lẻo để làm một cái gì đó "ngay bây giờ" trong hàm.php, có lẽ còn quá sớm. Thay vào đó, các dòng mã lỏng lẻo ở đây nên có tính chất chuẩn bị, nghĩa là "Thực hiện sau" hoặc "Đây là hằng số cho sau này" hoặc, như tên của tệp cho thấy, "Đây là một chức năng để chạy sau".
Các tệp mẫu, mặt khác, được chạy tương đối muộn. WordPress cho đến nay trong quá trình tải, nó có đủ thông tin để chọn tệp mẫu chính xác cho yêu cầu của người dùng. Hầu như bất kỳ mã lỏng lẻo nào cũng có ý nghĩa ở đây, bởi vì chúng ta sắp kết thúc chu kỳ. Mọi thứ khác được thiết lập và chúng tôi đã xây dựng đầu ra của chúng tôi.
Với tất cả điều này trong tâm trí, mọi thứ bắt đầu đi vào trọng tâm. Tại sao một lỗi cú pháp trong hàm.php gây ra một màn hình trắng chết chóc, nhưng một lỗi cú pháp trong một tệp mẫu chỉ làm hỏng trang giữa chừng? Vì Hàm.php đang chạy trước bất kỳ đầu ra nào, do đó, một lỗi sẽ phá vỡ mọi thứ trước khi có bất cứ điều gì hiển thị, nhưng một tệp mẫu có thể đi được một nửa.
Vì vậy, nó đi xuống theo trình tự, nhưng theo một cách sâu sắc hơn tôi nghĩ ban đầu.
ps Điều gì đã giúp tôi hiểu điều này tốt hơn trong năm qua là (a) hiểu rõ hơn về thứ tự tải đã đạt được từ bước qua trình tự tải với xDebug, theo nghĩa đen là xem mọi thứ diễn ra như thế nào và (b) hiểu sâu hơn về móc. Vì thứ tự tải rất quan trọng trong WordPress, hệ thống hook rất quan trọng. Nó giống như du hành thời gian cho mã của bạn.