Trong WordPress, URL không ánh xạ tới các tuyến đường. Họ ánh xạ tới các truy vấn cơ sở dữ liệu.
Khi sử dụng WordPress trong chế độ permalinks "mặc định", bạn có một bộ biến trong truy vấn URL chính, như? P = 1 hoặc? Page = 234, v.v. Ngoài ra còn có? S = tìm kiếm và nhiều người khác.
Nếu bạn sử dụng permalinks "khá", thì một bộ quy tắc lớn gọi là "quy tắc viết lại" được tạo để ánh xạ trực tiếp các mẫu URL khác nhau vào cùng một bộ tham số URL này. Vì vậy, một URL như / 2014/04/12 / ví dụ sẽ ánh xạ tới? Year = 2014 & tháng = 04 & day = 12 & postname = ví dụ hoặc tương tự. Vì vậy, những điều sau đây cũng áp dụng cho những điều này, sau khi ánh xạ này được thực hiện.
Các biến này về cơ bản kiểm soát thể hiện chính của lớp WP_Query. Lớp WP_Query chứa tất cả thông tin xây dựng truy vấn cơ sở dữ liệu để lấy "bài đăng" từ cơ sở dữ liệu. Các tham số khác nhau được truyền vào nó kiểm soát loại truy vấn nào được xây dựng và dữ liệu nào nhận được.
Xem, mọi thứ có thể được hiển thị bởi WordPress về cơ bản là một "bài đăng". Một blog là một loạt các bài viết theo thứ tự ngược thời gian. "Trang" là một bài tĩnh với tên được xác định. "Loại bài đăng tùy chỉnh" chính xác là âm thanh của nó, "bài đăng" với loại tùy chỉnh mà bạn xác định. Tất cả các truy vấn chính để hiển thị mọi thứ trong WordPress đều nhận được một số tập hợp con các bài đăng từ bảng wp_posts.
WP_Query là cái gì Và các tham số từ URL được gửi trực tiếp vào truy vấn chính đó và được sử dụng ở đó.
Sau đó, chủ đề sẽ xác định mẫu nào sẽ sử dụng dựa trên những gì truy vấn quay lại. Nếu bạn đã yêu cầu / category / example, thì điều đó trở thành? Category_name = example có nghĩa là mảng chính $ wp_query-> query_vars sẽ lấy thông tin đó và WP_Query sẽ lấy ra các bài đăng X cuối cùng cho danh mục "ví dụ" và nó sẽ đặt cờ is_c Category của nó thành true.
Trình tải mẫu sẽ chạy sau này, xem is_carget () trả về true và quyết định chọn mẫu danh mục, do đó, nó sẽ tìm danh mục-example.php và quay lại category.php, v.v., theo Mẫu Hệ thống cấp bậc.
Vì vậy, câu hỏi nếu bạn muốn thay đổi cách URL hoạt động rất đơn giản: Bạn có muốn thay đổi URL hoặc những gì chúng được ánh xạ tới? Vì các URL không được ánh xạ tới các chức năng, chúng được ánh xạ tới các tham số kiểm soát truy vấn. Nếu bạn muốn URL điều chỉnh truy vấn chính đó, thì đó là một quy trình hơi khác so với nếu bạn muốn một URL đặc biệt để chạy một số mã đặc biệt hoàn toàn khác.
Và để trả lời câu hỏi cụ thể của bạn trong các bình luận: "không có trường hợp nào bạn không thực sự muốn hiển thị bài viết?" Không có. Tất cả mọi thứ là một bài viết. Tất cả nội dung được lưu trữ trong bài viết. Nếu bạn muốn lưu trữ nội dung ở nơi khác và khác biệt, thì bạn có thể làm điều đó, nhưng điều đó khó khăn hơn bởi vì, thành thật mà nói, điều đó thường không cần thiết. Nếu bạn có nội dung đặc biệt, hãy tạo một loại bài đăng tùy chỉnh, lưu trữ nội dung của bạn dưới dạng một bài đăng với loại đó, ánh xạ một mẫu URL tới nó. Dễ dàng.