ลำดับชั้นเทมเพลตของธีมบล็อก WordPress
ลำดับชั้นเทมเพลตของธีมบล็อก (FSE) ฉบับเต็ม: สำหรับคำขอแต่ละประเภท คือรายการเทมเพลตตามลำดับที่ WordPress ไล่หา เริ่มจากตัวที่เจาะจงที่สุดก่อน แล้วถอยไปที่ index.html เทียบเท่ากับแผนผังลำดับชั้นแบบคลาสสิกในยุคบล็อก
สำหรับแต่ละคำขอ WordPress จะค้นหาเทมเพลตเหล่านี้ตามลำดับ — เจาะจงที่สุดก่อน — และหยุดที่ตัวแรกที่มีอยู่ในโฟลเดอร์ /templates ของธีมคุณ ลำดับนี้จะสิ้นสุดที่ index.html เสมอ
หน้าแรก
หน้าแรกของเว็บไซต์ ไม่ว่าจะตั้งค่าให้แสดงเรื่องล่าสุดหรือหน้าคงที่ก็ตาม
- front-page.html
- home.html
- index.html
front-page.html จะถูกใช้เสมอ ไม่ว่าจะเลือกอะไรใน Settings → Reading ก็ตาม หากหน้าแรกเป็นหน้าคงที่และไม่มี front-page.html ระบบจะไล่ไปตามลำดับของหน้าคงที่ ไม่ใช่ home.html
หน้ารวมบล็อกโพสต์
หน้าที่แสดงรายการเรื่องล่าสุดของคุณ ("posts page" ใน Settings → Reading)
- home.html
- index.html
โพสต์เดี่ยว
บล็อกโพสต์แต่ละรายการ
- single-post-{slug}.html
- single-post.html
- single.html
- singular.html
- index.html
custom post type เดี่ยว
รายการหนึ่งของ custom post type (เช่น "book")
- single-{post-type}-{slug}.html
- single-{post-type}.html
- single.html
- singular.html
- index.html
สำหรับ post type "book" ที่มี slug เป็น "dune": single-book-dune.html จากนั้น single-book.html แล้วจึง single.html
หน้าคงที่
หน้า WordPress ทั่วไป
- page-{slug}.html
- page-{id}.html
- page.html
- singular.html
- index.html
หน้าที่ใช้เทมเพลตกำหนดเอง
หน้าที่ถูกกำหนดเทมเพลตกำหนดเองในแผง Template ของตัวแก้ไข
- {custom-template}.html
- page-{slug}.html
- page-{id}.html
- page.html
- singular.html
- index.html
เทมเพลตกำหนดเองจะถูกประกาศไว้ในอาร์เรย์ customTemplates ของ theme.json และเก็บอยู่ใน /templates เทมเพลตที่กำหนดไว้จะถูกใช้แทนลำดับของหน้าทั้งหมด
อาร์ไคฟ์หมวดหมู่
อาร์ไคฟ์ที่แสดงรายการโพสต์ในหมวดหมู่หนึ่ง
- category-{slug}.html
- category-{id}.html
- category.html
- archive.html
- index.html
อาร์ไคฟ์แท็ก
อาร์ไคฟ์ที่แสดงรายการโพสต์ที่มีแท็กหนึ่ง
- tag-{slug}.html
- tag-{id}.html
- tag.html
- archive.html
- index.html
อาร์ไคฟ์ taxonomy กำหนดเอง
อาร์ไคฟ์สำหรับเทอมใน taxonomy กำหนดเอง
- taxonomy-{taxonomy}-{term}.html
- taxonomy-{taxonomy}.html
- taxonomy.html
- archive.html
- index.html
อาร์ไคฟ์ผู้เขียน
อาร์ไคฟ์ที่แสดงโพสต์ของผู้เขียนคนหนึ่ง
- author-{nicename}.html
- author-{id}.html
- author.html
- archive.html
- index.html
อาร์ไคฟ์ตามวันที่
อาร์ไคฟ์ตามปี / เดือน / วัน
- date.html
- archive.html
- index.html
อาร์ไคฟ์ post type
หน้ารวมอาร์ไคฟ์สำหรับ custom post type ที่ตั้งค่า has_archive ไว้
- archive-{post-type}.html
- archive.html
- index.html
ผลการค้นหา
หน้าแสดงผลลัพธ์ของการค้นหาในเว็บไซต์
- search.html
- index.html
404 (ไม่พบหน้า)
แสดงเมื่อไม่มีเนื้อหาใดตรงกับ URL
- 404.html
- index.html
หน้าไฟล์แนบ
หน้าสำหรับไฟล์แนบสื่อแต่ละรายการ
- attachment.html
- single.html
- singular.html
- index.html
หลายเว็บไซต์ปิดหน้าไฟล์แนบทั้งหมด (เพราะเป็นเนื้อหาที่บางเกินไป) หากคุณยังเปิดใช้อยู่ นี่คือลำดับที่ใช้
หน้านโยบายความเป็นส่วนตัว
หน้าที่ถูกตั้งเป็นนโยบายความเป็นส่วนตัวของเว็บไซต์ในหน้า Settings
- page-privacy-policy.html
- privacy-policy.html
- page.html
- singular.html
- 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) และบันทึกการเปลี่ยนแปลงลงฐานข้อมูล — ซึ่งจะไปแทนที่ไฟล์ของธีมจนกว่าคุณจะล้างการปรับแต่งนั้น เรื่องนี้มักทำให้คนที่กำลังไล่หาสาเหตุว่า "ทำไมการแก้เทมเพลตของฉันถึงไม่มีผลอะไรเลย" ประหลาดใจ