ข้ามไปยังเนื้อหา
อ้างอิง

ลำดับชั้นเทมเพลตของธีมบล็อก WordPress

ลำดับชั้นเทมเพลตของธีมบล็อก (FSE) ฉบับเต็ม: สำหรับคำขอแต่ละประเภท คือรายการเทมเพลตตามลำดับที่ WordPress ไล่หา เริ่มจากตัวที่เจาะจงที่สุดก่อน แล้วถอยไปที่ index.html เทียบเท่ากับแผนผังลำดับชั้นแบบคลาสสิกในยุคบล็อก

สำหรับแต่ละคำขอ WordPress จะค้นหาเทมเพลตเหล่านี้ตามลำดับ — เจาะจงที่สุดก่อน — และหยุดที่ตัวแรกที่มีอยู่ในโฟลเดอร์ /templates ของธีมคุณ ลำดับนี้จะสิ้นสุดที่ index.html เสมอ

หน้าแรก

หน้าแรกของเว็บไซต์ ไม่ว่าจะตั้งค่าให้แสดงเรื่องล่าสุดหรือหน้าคงที่ก็ตาม

  1. front-page.html
  2. home.html
  3. index.html

front-page.html จะถูกใช้เสมอ ไม่ว่าจะเลือกอะไรใน Settings → Reading ก็ตาม หากหน้าแรกเป็นหน้าคงที่และไม่มี front-page.html ระบบจะไล่ไปตามลำดับของหน้าคงที่ ไม่ใช่ home.html

หน้ารวมบล็อกโพสต์

หน้าที่แสดงรายการเรื่องล่าสุดของคุณ ("posts page" ใน Settings → Reading)

  1. home.html
  2. index.html

โพสต์เดี่ยว

บล็อกโพสต์แต่ละรายการ

  1. single-post-{slug}.html
  2. single-post.html
  3. single.html
  4. singular.html
  5. index.html

custom post type เดี่ยว

รายการหนึ่งของ custom post type (เช่น "book")

  1. single-{post-type}-{slug}.html
  2. single-{post-type}.html
  3. single.html
  4. singular.html
  5. index.html

สำหรับ post type "book" ที่มี slug เป็น "dune": single-book-dune.html จากนั้น single-book.html แล้วจึง single.html

หน้าคงที่

หน้า WordPress ทั่วไป

  1. page-{slug}.html
  2. page-{id}.html
  3. page.html
  4. singular.html
  5. index.html

หน้าที่ใช้เทมเพลตกำหนดเอง

หน้าที่ถูกกำหนดเทมเพลตกำหนดเองในแผง Template ของตัวแก้ไข

  1. {custom-template}.html
  2. page-{slug}.html
  3. page-{id}.html
  4. page.html
  5. singular.html
  6. index.html

เทมเพลตกำหนดเองจะถูกประกาศไว้ในอาร์เรย์ customTemplates ของ theme.json และเก็บอยู่ใน /templates เทมเพลตที่กำหนดไว้จะถูกใช้แทนลำดับของหน้าทั้งหมด

อาร์ไคฟ์หมวดหมู่

อาร์ไคฟ์ที่แสดงรายการโพสต์ในหมวดหมู่หนึ่ง

  1. category-{slug}.html
  2. category-{id}.html
  3. category.html
  4. archive.html
  5. index.html

อาร์ไคฟ์แท็ก

อาร์ไคฟ์ที่แสดงรายการโพสต์ที่มีแท็กหนึ่ง

  1. tag-{slug}.html
  2. tag-{id}.html
  3. tag.html
  4. archive.html
  5. index.html

อาร์ไคฟ์ taxonomy กำหนดเอง

อาร์ไคฟ์สำหรับเทอมใน taxonomy กำหนดเอง

  1. taxonomy-{taxonomy}-{term}.html
  2. taxonomy-{taxonomy}.html
  3. taxonomy.html
  4. archive.html
  5. index.html

อาร์ไคฟ์ผู้เขียน

อาร์ไคฟ์ที่แสดงโพสต์ของผู้เขียนคนหนึ่ง

  1. author-{nicename}.html
  2. author-{id}.html
  3. author.html
  4. archive.html
  5. index.html

อาร์ไคฟ์ตามวันที่

อาร์ไคฟ์ตามปี / เดือน / วัน

  1. date.html
  2. archive.html
  3. index.html

อาร์ไคฟ์ post type

หน้ารวมอาร์ไคฟ์สำหรับ custom post type ที่ตั้งค่า has_archive ไว้

  1. archive-{post-type}.html
  2. archive.html
  3. index.html

ผลการค้นหา

หน้าแสดงผลลัพธ์ของการค้นหาในเว็บไซต์

  1. search.html
  2. index.html

404 (ไม่พบหน้า)

แสดงเมื่อไม่มีเนื้อหาใดตรงกับ URL

  1. 404.html
  2. index.html

หน้าไฟล์แนบ

หน้าสำหรับไฟล์แนบสื่อแต่ละรายการ

  1. attachment.html
  2. single.html
  3. singular.html
  4. index.html

หลายเว็บไซต์ปิดหน้าไฟล์แนบทั้งหมด (เพราะเป็นเนื้อหาที่บางเกินไป) หากคุณยังเปิดใช้อยู่ นี่คือลำดับที่ใช้

หน้านโยบายความเป็นส่วนตัว

หน้าที่ถูกตั้งเป็นนโยบายความเป็นส่วนตัวของเว็บไซต์ในหน้า Settings

  1. page-privacy-policy.html
  2. privacy-policy.html
  3. page.html
  4. singular.html
  5. index.html

สิ่งนี้แตกต่างจากลำดับชั้นแบบคลาสสิก (PHP) อย่างไร

  • เทมเพลตเป็นไฟล์ .html ใน /templates ไม่ใช่ไฟล์ .php ในโฟลเดอร์รากของธีม ไม่มี single.php — แต่เป็น single.html
  • ส่วนที่นำกลับมาใช้ซ้ำได้ (header, footer) คือ template PART ใน /parts ซึ่งอ้างอิงด้วยบล็อก wp:template-part ไม่ใช่การเรียก PHP อย่าง get_header() / get_footer()
  • ไม่มีลำดับ get_template_part() และไม่มี get_header()/get_footer() การประกอบหน้าทำผ่านบล็อก Template Part ภายในไฟล์ .html
  • index.html เป็นสิ่งที่ต้องมี block theme ที่ไม่มี templates/index.html ถือว่าไม่ใช่ block theme ที่ถูกต้อง — เพราะมันคือ fallback สุดท้ายที่จำเป็นสำหรับทุกเส้นทางข้างต้น
  • ธีมจะถูกระบุว่าเป็น block theme ด้วยการมีอยู่ของ templates/index.html ร่วมกับ theme.json ไม่ใช่ด้วยแฟล็กใน header ใด ๆ
  • คุณสามารถแก้ไขเทมเพลตเหล่านี้ได้ใน Site Editor (Appearance → Editor) และบันทึกการเปลี่ยนแปลงลงฐานข้อมูล — ซึ่งจะไปแทนที่ไฟล์ของธีมจนกว่าคุณจะล้างการปรับแต่งนั้น เรื่องนี้มักทำให้คนที่กำลังไล่หาสาเหตุว่า "ทำไมการแก้เทมเพลตของฉันถึงไม่มีผลอะไรเลย" ประหลาดใจ