get_queried_object()
trả null
về lưu trữ ngày đăng (loại trang is_date()
) và trang chỉ mục blog chính (loại trang is_home()
). Đây là cố ý, hay chỉ là một giám sát?
Tôi đã viết một trình bao bọc xung quanh get_queried_object () để lấy tiêu đề của trang hiện tại, bất kể đó là loại trang nào, để sử dụng trong một chủ đề. Tôi nhanh chóng nhận ra rằng thay vì sử dụng, get_query_object()
tôi chỉ nên sao chép các bit quan trọng từ đó wp_title()
, nhưng trước đó tôi đã gặp một vấn đề thú vị.
Dường như get_queried_object()
và hàm gốc của nó WP_Query->get_queried_object()
trả về null
một vài loại danh sách, bao gồm đầu ra danh sách bài đăng chính theo index.php (loại trang is_home()
) và lưu trữ bài đăng theo ngày (loại trang is_date()
).
Tôi đã kiểm tra điều này bằng cách ném đoạn mã sau vào một số tệp mẫu ở một số vị trí, luôn luôn sau get_header()
và trước the_post()
:
<pre><code><?php
$queried_object = get_queried_object();
var_dump( $queried_object );
?></code></pre>
Điều này hoạt động hoàn hảo trên kho lưu trữ danh mục, lưu trữ thẻ, lưu trữ phân loại tùy chỉnh và lưu trữ loại bài tùy chỉnh. get_queried_object()
trả về đối tượng truy vấn, có thể được sử dụng để trích xuất tiêu đề trang và thông tin hữu ích khác.
Tuy nhiên, nó không thành công trong archive.php đối với lưu trữ ngày đăng bài chuẩn và index.php cho chế độ xem danh sách trang chủ của bài đăng bình thường.
Đi sâu vào nguồnWP_Query->get_queried_object()
tiết lộ một cái gì đó không đáng ngạc nhiên: không có kiểm tra loại is_home()
trang hoặc loại trang is_date()
, vì vậy trên các loại trang đó $this->queried_object = null;
không được cập nhật và chức năng trả về null
.
Vì vậy, câu hỏi của tôi là, chức năng dự định này (ví dụ: bạn không nên sử dụng get_queried_object () trên các trang đó), giới hạn kỹ thuật (không có đối tượng có ý nghĩa để quay lại trên các trang đó) hay chỉ đơn giản là giám sát thực hiện?
Thậm chí có tương đương với đối tượng loại bài đăng tùy chỉnh cho loại bài đăng "bài đăng blog" tích hợp để hiển thị không?
get_queried_object
rất không nhất quán và trả lại một số đối tượng khác nhau cũng như đôi khi trở lại null
. Mặc dù nó rất hữu ích, nhưng nó có thể gây khó chịu khi sử dụng.
get_queried_object
.