Phân cấp mẫu: nhầm lẫn với index.php, front-page.php, home.php


36

Tôi thực sự bối rối với index.php, home.phpfront-page.php. Trong nhiều trường hợp mặc dù tôi có một index.php, tôi đã ghi đè lên nó front-page.php. Nhưng gần đây, tôi đã nhận thức được home.php.

  • Sự khác biệt giữa home.phpvà là index.phpgì?
  • Điều kiện lý tưởng để sử dụng home.phphơn là index.phpgì?
  • Điều kiện lý tưởng để sử dụng là front-page.phpgì?
  • Khi tôi đang sử dụng front-page.phpthì nhiệm vụ cụ thể mà index.phptôi đang làm cho tôi là gì?

Tôi đã đọc Phân cấp mẫu trong Codex. Vui lòng không trộn câu hỏi của tôi với Mẫu trang, tôi hiểu chúng, al HamduLILLAH.


1
Có @rarst với điều này: rarst.net/wordpress/front-page-logic . Tôi có thể giúp gì cho bạn.
Hồi giáo Mayeenul

Câu trả lời:


34

Logic trang trước là một trong những tính năng khó hiểu nhất trong WordPress và đặc biệt khó giải thích và tóm tắt. Như đã đề cập trong bình luận trong khi trở lại, tôi đã đốt một lượng thời gian không hợp lý để tập hợp lại bảng cheat logic trên trang nhất của mình cho nó.

Nhưng vì đây là một chủ đề phổ biến, hãy để tôi cố gắng trả lời những câu hỏi rất cụ thể mà bạn có.

Sự khác biệt giữa home.phpvà là index.phpgì?

home.phplà mẫu cho chỉ mục bài viết (lưu trữ loại bài đăng gốc, đây là trường hợp đặc biệt trong WP). WP sẽ cố gắng tìm kiếm chỉ mục của các bài đăng, cho dù chúng được hiển thị ở thư mục gốc của trang hoặc tại trang bài viết chuyên dụng.

index.phplà bắt tất cả các mẫu. Đây là lựa chọn cuối cùng trong tất cả các nhánh của hệ thống phân cấp mẫu và sẽ được chọn khi không có gì khác phù hợp, cho cả lưu trữ và chế độ xem số ít.

Chỉ bài viết chỉ có thể sử dụng home.php, nhưng tất cả các bối cảnh khác có thể và sẽ sử dụng index.php.

Điều kiện lý tưởng để sử dụng home.phphơn mộtindex.php

Bạn sử dụng home.phpđể tùy chỉnh chỉ mục bài viết.

Bạn sử dụng index.phpđể cung cấp mẫu chung nhất trong chủ đề của mình, phù hợp để hiển thị mọi thứ.

Một số chủ đề chọn để trống index.phpvà đảm bảo chúng có các mẫu cụ thể hơn cho tất cả các trường hợp có thể, vì vậy nó không bao giờ phải được sử dụng.

Điều kiện lý tưởng để sử dụng là front-page.phpgì?

front-page.php được sử dụng cho chỉ mục bài viết ở trang gốc hoặc trang tĩnh, nếu được bật.

Đây là một mẫu có mức độ ưu tiên cao, vì vậy nếu chủ đề có nó, bạn không thể chọn mẫu tùy ý cho trang trước tĩnh. Vì lý do này, nó gần như không bao giờ được bao gồm trong các chủ đề được phát hành công khai (đó là chính xác).

Việc sử dụng tốt nhất cho nó là trong các dự án riêng tư, vì nó dễ cấu hình hơn mẫu trang.

Khi tôi đang sử dụng front-page.phpthì nhiệm vụ cụ thể mà index.phptôi đang làm cho tôi là gì?

index.phpvẫn một nắm bắt tất cả các mẫu cho tất cả các trường hợp khác.

Nếu bạn sử dụng trang trước tĩnh ( front-page.phpsẽ áp dụng) thì trang bài viết của bạn sẽ cố gắng sử dụng home.phpvà sau đó index.php.


28

Các front-page.phptập tin là mẫu trang đầu trang . Nó sẽ luôn được sử dụng trên trang nhất của trang của bạn, bất kể get_option( 'show_on_front' )được đặt thành pagehay posts.

Tệp home.phpmẫu là mẫu chỉ mục bài viết blog . Nó sẽ luôn được sử dụng để hiển thị chỉ mục bài đăng trên blog của bạn, bất kể chỉ mục bài đăng trên blog được hiển thị trên trang nhất của trang hay trên một trang khác.

Trong trường hợp cả hai front-page.phphome.hpptồn tại, và get_option( 'show_on_front' )được đặt thành posts(nghĩa là trang đầu trang hiển thị chỉ mục bài đăng trên blog), front-page.phptệp sẽ được ưu tiên hơn home.phptệp.

Các index.phptập tin là mẫu dự phòng mặc định cho tất cả các bối cảnh trong Template Hierarchy . Nó chỉ được sử dụng nếu một tệp mẫu cụ thể hơn không tồn tại cho bối cảnh hiện tại.

Hệ thống phân cấp mẫu cho trang đầu của trang là:

  • front-page.php
  • Nếu 'page' == get_option( 'show_on_front' ): phân cấp trang
  • Nếu 'posts' == get_option( 'show_on_front' ): blog bài viết phân cấp chỉ mục

Hệ thống phân cấp mẫu cho chỉ mục bài đăng trên blog là:

  • home.php
  • index.php

Hệ thống phân cấp mẫu cho các trang là:

  • Mẫu trang tùy chỉnh
  • page-{slug}.php
  • page-{id}.php
  • page.php
  • index.php

Vì vậy, nếu tôi hiểu đúng, bạn không thể sử dụng my-template-1mẫu khi trang trước được đặt thành bài đăng mới nhất và sử dụng my-template-2khi mặt trước được đặt thành trang tĩnh (không có mã hóa)?
Jack Johansson

18

Tất cả điều này đến từ việc đọc kỹ Cấu trúc phân cấp .

home.php được sử dụng nếu:

  • Trang trước của trang web của bạn được đặt để hiển thị danh sách các bài đăng, hoặc
  • Và chủ đề có một home.phptập tin

Nếu điều kiện cuối cùng không được đáp ứng - tức là không có home.phptệp nào trong chủ đề - thì index.phpsẽ được tải.

front-page.php sẽ được sử dụng nếu:

  • Một trang trước tĩnh được đặt
  • Một khách truy cập đi đến trang mà bạn đã xác định là "trang chủ tĩnh" (nghĩa là http://example.com/) và
  • Chủ đề có một front-page.phptập tin

Nếu điều kiện cuối cùng không được đáp ứng - tức là không có front-page.phptệp nào trong chủ đề - thì index.phpsẽ được tải.

Tóm tắt

Nếu bạn muốn tùy chỉnh danh sách bài viết của mình, hãy sử dụng home.php.
Nếu bạn muốn tùy chỉnh trang chủ tĩnh của mình, hãy sử dụng front-page.php.


2
home.phpsẽ được sử dụng cho chỉ mục bài viết trên blog, bất kể vị trí. Nếu trang trước được đặt để hiển thị chỉ mục bài đăng trên blog, thì nó home.phpsẽ được sử dụng (nếu front-page.phpkhông tồn tại).
Chip Bennett

10

Nói ngắn gọn:

  • index.php chỉ là một mẫu dự phòng, trong trường hợp không tìm thấy mẫu thích hợp
  • home.php được sử dụng cho blog (danh sách các bài đăng gần đây)
  • front-page.php được sử dụng cho trang đích

Các phổ index.phpmẫu

Các index.phptập tin mẫu là một mẫu dự phòng. Nó được sử dụng như là phương sách cuối cùng khi không có mẫu nào phù hợp hơn. Ví dụ, nếu bạn không có một front-page.phphay một home.phpsau đó index.phpsẽ được sử dụng. Điều này cũng đúng cho việc mất tích archive.phphoặc single.phpvân vân.

Về front-page.phpVShome.php

Bây giờ, sự khác biệt giữa front-page.phpvà các home.phpmẫu là cái front-page.phpđược sử dụng, như tên gọi của nó, là trang chính của trang web, trong khi home.phpđược dự định là trang chủ của phần Blog .

Mẫu nào sẽ được sử dụng cho trang đích của trang web của tôi?

Các front-page.phpmẫu, nếu có, sẽ được sử dụng cho trang chính của trang web (ví dụ http://www.example.com/). Nếu không có mặt, sau đó home.phpsẽ được sử dụng thay thế. Nếu cả tệp front-page.phphome.phptệp mẫu bị thiếu thì index.phpmẫu dự phòng sẽ được sử dụng.

Mẫu nào sẽ được sử dụng cho trang blog của tôi?

WordPress cho phép bạn có một trang "Blog" (sẽ liệt kê các bài đăng gần đây) trên một trang khác với trang đích (ví dụ http://www.example.com/blog/). Vì vậy, nếu đây là trường hợp trên trang web của bạn, thì trang Blog sẽ luôn sử dụng home.phpmẫu. Nếu home.phpkhông tồn tại thì index.phpmẫu dự phòng sẽ được sử dụng.

Làm cách nào để định cấu hình trang đích và trang blog?

Để định cấu hình nội dung sẽ hiển thị trên trang trước của bạn, hãy truy cập Quản trị viên WordPress , trong Công cụ> Đọc , ở đó bạn có thể định cấu hình " Hiển thị trang trước " để hiển thị trang tĩnh hoặc bài đăng mới nhất của bạn.

Trong trường hợp bạn chọn hiển thị trang tĩnh trên trang trước, thì bạn cũng có khả năng đặt trang nào sẽ sử dụng làm trình giữ chỗ cho trang Blog (sẽ sử dụng home.phpmẫu):

nhập mô tả hình ảnh ở đây


3

lấy từ hệ thống phân cấp mẫu Wordpress

Hiển thị trang chủ

Theo mặc định, WordPress đặt trang chủ của trang web của bạn để hiển thị các bài đăng blog mới nhất của bạn. Trang này được gọi là chỉ mục bài viết blog. Bạn cũng có thể đặt các bài đăng trên blog của mình để hiển thị trên một trang tĩnh riêng. Tệp mẫu home.php được sử dụng để hiển thị chỉ mục bài đăng trên blog, cho dù nó đang được sử dụng làm trang đầu hoặc trên trang tĩnh riêng biệt. Nếu home.php không tồn tại, WordPress sẽ sử dụng index.php.

  1. nhà.php
  2. index.php

Lưu ý: Nếu front-page.php tồn tại, nó sẽ ghi đè lên mẫu home.php.

Hiển thị trang trước

Tệp mẫu front-page.php được sử dụng để hiển thị trang trước của trang web của bạn, cho dù trang trước hiển thị chỉ mục bài đăng blog (đã đề cập ở trên) hoặc trang tĩnh. Mẫu trang trước được ưu tiên hơn mẫu chỉ mục bài đăng blog (home.php). Nếu tệp front-page.php không tồn tại, WordPress sẽ sử dụng các tệp home.php hoặc page.php tùy thuộc vào thiết lập trong Cài đặt → Đọc. Nếu cả hai tệp đó không tồn tại, nó sẽ sử dụng tệp index.php.

1. front-page.php - Được sử dụng cho cả hai bài đăng mới nhất của bạn. Hay hoặc một trang tĩnh tĩnh như được đặt trong trang trước hiển thị phần Cài đặt → Đọc.

2. home.php - Nếu WordPress không thể tìm thấy front-page.php và các bài đăng mới nhất của bạn thì được đặt trong phần hiển thị trang trước, nó sẽ tìm home.php. Ngoài ra, WordPress sẽ tìm tệp này khi trang bài viết được đặt trong phần hiển thị trang trước.

3. page.php - Khi trang trước của trang trước thì được đặt trong phần hiển thị trang trước.

4. index.php - Khi mà các bài đăng mới nhất của bạn, thì được đặt trong trang trước sẽ hiển thị phần nhưng home.php không tồn tại hoặc khi trang trước được đặt nhưng page.php không tồn tại.

Như bạn có thể thấy, có rất nhiều quy tắc cho con đường mà WordPress đi. Sử dụng biểu đồ trên là cách tốt nhất để xác định những gì WordPress sẽ hiển thị.

Biểu đồ phân cấp mẫu: Phân cấp mẫu Wordpress


2

Tôi đã quyết định kiểm tra mẫu nào được sử dụng cho mỗi trang sau khi các tùy chọn hiển thị Trang trước khác nhau được đặt.

  • example.net
  • example.net/home/
  • example.net/blog/

Các kết quả khá dài, nhưng có thể được sử dụng như một tài liệu tham khảo hoặc cheat-sheet.

Trang nhất hiển thị

Nguồn: Các mẫu front-page.php và home.php khác nhau như thế nào trong WordPress?

Lưu ý với biên tập viên: Tôi đã cố gắng sao chép và dán các bảng ở đây nhưng định dạng đánh dấu là bắt buộc thay vì HTML. Vui lòng chuyển đổi sang markdown nếu bạn có thể.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.