Template hierarchy একটি পেজের slug বা ID-এর ভিত্তিতে স্বয়ংক্রিয়ভাবে একটি ফাইল বেছে নেয়, কিন্তু কখনো কখনো আপনার একদম কাস্টম একটি লেআউট দরকার যার দুটোর কোনোটার সাথেই সম্পর্ক নেই — একটি হিরো ব্যানারসহ হোমপেজ, সম্পূর্ণ ভিন্ন গঠনের একটি ল্যান্ডিং পেজ। এটাই একটি কাস্টম পেজ টেমপ্লেট-এর কাজ।
থিমের যেকোনো PHP ফাইল উপরে শুধু একটি কমেন্ট যোগ করে একটি বাছাইযোগ্য পেজ টেমপ্লেট হয়ে যায়:
<?php
/**
* Template Name: Home Page
*/
get_header();
?>
<section class="hero">
<?php while ( have_posts() ) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; ?>
</section>
<?php get_footer(); ?>এই একক Template Name: লাইনটাই পুরো রেজিস্ট্রেশন ধাপ — কোনো functions.php কোড লাগে না। একটি প্রচলিত নামকরণ প্রথা হলো template-{name}.php, কিন্তু ফাইলের নাম নিজে WordPress-এর কাছে গুরুত্বপূর্ণ নয়; শুধু কমেন্টটাই।
যেকোনো পেজের এডিটরে, Page Attributes প্যানেলে একটি Template ড্রপডাউন থাকে — Template Name: কমেন্টসহ প্রতিটি ফাইল সেখানে তার দেওয়া নামে দেখা যায়। এটি বেছে নিন, পেজ আপডেট করুন, আর সেই একটি পেজ এখন page.php-এর বদলে কাস্টম ফাইলের মাধ্যমে রেন্ডার হবে।
এটি সেই একটি পেজের জন্য page.php-কে সম্পূর্ণভাবে প্রতিস্থাপন করে
একটি কাস্টম পেজ টেমপ্লেট সেই একটি পেজের জন্য page.php-কে সম্পূর্ণভাবে প্রতিস্থাপন করে — hierarchy বাকি সবকিছুর আগে এটি চেক করে। page.php থেকে কিছুই স্বয়ংক্রিয়ভাবে বহন হয় না; কাস্টম টেমপ্লেটের যদি একই header, footer, বা অন্য শেয়ার করা মার্কআপ দরকার হয়, তাহলে এটি নিজেই get_header()/get_footer() কল করে, অন্য যেকোনো টেমপ্লেটের মতোই।
সবচেয়ে সাধারণ বাস্তব-জগতের ব্যবহার ঠিক উপরের উদাহরণটিই: একটি "Home Page" টেমপ্লেট, Settings → Reading-এ সাইটের স্ট্যাটিক হোমপেজ হিসেবে সেট করা যে পেজেই বরাদ্দ করা হোক না কেন। এটি হোমপেজকে সম্পূর্ণ ভিন্ন একটি গঠন দিতে দেয় — একটি হিরো সেকশন, ফিচার্ড কন্টেন্ট, ডিজাইন যা দাবি করে — সেই লজিকের কোনোটাই বাকি প্রতিটি পেজ এখনও ব্যবহার করা সাধারণ page.php-এ না মিশিয়ে।
পরের পাঠ কিছুক্ষণের জন্য টেমপ্লেট থেকে সরে গিয়ে এখন পর্যন্ত প্রতিটিতে যা ভুলভাবে করা হচ্ছিল তা ঠিক করে — CSS আর JavaScript সঠিক উপায়ে লোড করা, header.php-এ সরাসরি <link> আর <script> ট্যাগ হার্ডকোড করার বদলে।