WordPress যখনই একটি পাতা সার্ভ করে, তাকে ঠিক করতে হয় থিমের কোন টেমপ্লেট ফাইলটি এটি রেন্ডার করবে। এই সিদ্ধান্ত এলোমেলো নয় বা কোথাও কনফিগার করা নয় — এটি একটি নির্দিষ্ট, অনুমানযোগ্য সার্চ অর্ডার অনুসরণ করে যাকে বলা হয় template hierarchy, আর এটি বোঝাই "PHP ফাইলের একটি ফোল্ডার"-কে এমন একটি থিমে পরিণত করে যা আসলে জানে কোথায় কী দেখাতে হবে।
যেকোনো নির্দিষ্ট রিকোয়েস্টের জন্য, WordPress বের করে কী চাওয়া হচ্ছে (একটি একক পোস্ট? একটি ক্যাটাগরি আর্কাইভ? হোমপেজ?) আর তারপর ক্রমান্বয়ে আরও সাধারণ ফাইলের নামের একটি সিরিজ চেক করে, ক্রমানুসারে, থিমে সত্যিই আছে এমন প্রথমটি ব্যবহার করে। নির্দিষ্টগুলোর কোনোটাই না থাকলে, এটি সবসময় index.php-এ ফিরে আসে — এই কারণেই এই ফাইলটি সত্যিকারভাবে একমাত্র বাধ্যতামূলক টেমপ্লেট।
| অনুরোধ করা URL | যে ফাইলগুলো ক্রমানুসারে চেক হয় |
|---|---|
| একটি একক ব্লগ পোস্ট | single-{post-type}.php → single.php → index.php |
| একটি স্ট্যান্ডঅ্যালোন পেজ | page-{slug}.php → page-{id}.php → page.php → index.php |
| একটি ক্যাটাগরি আর্কাইভ | category-{slug}.php → category-{id}.php → category.php → archive.php → index.php |
| একটি 404 (not found) | 404.php → index.php |
| সাইটের হোমপেজ | front-page.php → home.php → page.php (একটি স্ট্যাটিক পেজ সেট থাকলে) → index.php |
এটাই একটি নির্দিষ্ট পাতাকে — একটি একক ক্যাটাগরি, একটি একক পেজ, এমনকি একটি একক পোস্টকে — তার নিজের সম্পূর্ণ ভিন্ন লেআউট দেওয়া সম্ভব করে, শুধু একটি আরও নির্দিষ্টভাবে নামকরণ করা ফাইল যোগ করে। কোনো সেটিংস স্ক্রিন লাগে না, একটি শেয়ার করা টেমপ্লেটের ভেতরে কোনো কন্ডিশনাল লজিক লাগে না; শুধু ফাইলের নামই WordPress-কে বলে দেয় কখন এটি ব্যবহার করতে হবে।
এটি প্যাটার্ন, পূর্ণ তালিকা নয়
পুরো hierarchy উপরের টেবিলের চেয়ে আরও অনেক বেশি কেস কাভার করে — ট্যাগ আর্কাইভ, লেখক আর্কাইভ, তারিখ আর্কাইভ, সার্চ রেজাল্ট, আর প্রতিটি কাস্টম পোস্ট টাইপ আর ট্যাক্সোনমি তার নিজস্ব সমতুল্য চেইন পায়। অফিসিয়াল WordPress template hierarchy ডায়াগ্রাম বুকমার্ক করে রাখা ভালো; এই পাঠ প্যাটার্নটি কাভার করে, প্রতিটি একক শাখা নয়।
সিদ্ধান্ত নেওয়ার লজিক স্পষ্ট হয়ে যাওয়ার পর, পরের পাঠ আসল ফাইলগুলো বানায় যেখানে এই hierarchy সবচেয়ে বেশি নির্দেশ করে — index.php, page.php, single.php, আর 404.php।