একটি কাস্টম পোস্ট টাইপ এই অংশের আগের ঠিক একই template hierarchy-তে বসে — এটি শুধু পোস্ট টাইপের নিজস্ব slug দিয়ে নামকরণের প্যাটার্ন বিস্তৃত করে।
| অনুরোধ করা URL | যে ফাইলগুলো ক্রমানুসারে চেক হয় |
|---|---|
| একটি একক project | single-project.php → single.php → index.php |
প্রজেক্ট আর্কাইভ (/projects/) | archive-project.php → archive.php → index.php |
| একটি project_type টার্ম আর্কাইভ | taxonomy-project_type.php → taxonomy.php → archive.php → index.php |
<?php get_header(); ?>
<main>
<?php while ( have_posts() ) : the_post(); ?>
<article>
<h1><?php the_title(); ?></h1>
<?php if ( has_post_thumbnail() ) : ?>
<?php the_post_thumbnail( 'large' ); ?>
<?php endif; ?>
<?php the_content(); ?>
</article>
<?php endwhile; ?>
</main>
<?php get_footer(); ?>এখানে নতুন কিছু নেই — এটি আগে ব্যবহার করা single.php-এর একই আকার। WordPress এই ফাইলটি স্বয়ংক্রিয়ভাবে শুধু এর নামের কারণে ব্যবহার করে; এটি শুধু project-এর জন্য প্রযোজ্য করতে কোনো অতিরিক্ত রেজিস্ট্রেশন ধাপ লাগে না।
<?php get_header(); ?>
<main>
<h1><?php post_type_archive_title(); ?></h1>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<article>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
</article>
<?php endwhile; ?>
<?php endif; ?>
</main>
<?php get_footer(); ?>post_type_archive_title() একটি আর্কাইভ লিস্টিংয়ের জন্য the_title()-এর পোস্ট-টাইপ সমতুল্য — এটি CPT UI-তে সেট করা প্লুরাল লেবেল ("Projects") আউটপুট করে, টেমপ্লেটে এটি হার্ডকোড না করেই।
"Has Archive" চালু থাকা দরকার
এই ফাইলটি শুধুমাত্র তখনই ব্যবহার হয় যদি CPT UI-তে পোস্ট টাইপের জন্য Has Archive সক্রিয় করা থাকে। এটি বন্ধ রাখা হলে, /projects/ একটি রুট হিসেবে আদৌ থাকে না, আর এই ফাইলটি অব্যবহৃত থাকে — একটি আর্কাইভ পেজ অনুপস্থিত মনে হলে প্রথমে এই সেটিং চেক করা ভালো।
কন্টেন্ট টাইপ, ট্যাক্সোনমি, আর তাদের টেমপ্লেট সবকিছু কাজ করার পর, এটি এই অংশের CPT UI ভাগ শেষ করে দেয়। এখান থেকে, ফোকাস সরে যায় সেই কন্টেন্ট টাইপগুলোকে একটি title আর body-এর বাইরে আসল গঠনবদ্ধ ডেটা দেওয়ার দিকে — Secure Custom Fields।