আমি কি একটি কাস্টম পোস্ট ধরণের কোনও টেম্পলেট ফাইল বরাদ্দ করতে পারি?
আমি একটি কাস্টম পোস্ট টাইপ নামে তৈরি করেছি items
এবং আমি পৃষ্ঠাগুলিতে আপনার মতো আইটেমগুলিতে টেম্পলেটগুলি অর্পণ করতে চাই।
আমি কি একটি কাস্টম পোস্ট ধরণের কোনও টেম্পলেট ফাইল বরাদ্দ করতে পারি?
আমি একটি কাস্টম পোস্ট টাইপ নামে তৈরি করেছি items
এবং আমি পৃষ্ঠাগুলিতে আপনার মতো আইটেমগুলিতে টেম্পলেটগুলি অর্পণ করতে চাই।
উত্তর:
থেকে ওয়ার্ডপ্রেস সংস্করণ 4.7 আপনি যা করতে পারেন পৃষ্ঠার পাশাপাশি অন্যান্য পোস্ট ধরনের এখন বরাদ্দ কাস্টম পৃষ্ঠা টেমপ্লেট।
টেম্পলেট নাম ফাইল শিরোনাম ছাড়াও এটি অর্জন করতে, টেমপ্লেট দ্বারা সমর্থিত পোস্টের ধরণগুলি টেমপ্লেট পোস্ট প্রকারটি ব্যবহার করে নির্দিষ্ট করা যেতে পারে: নিম্নলিখিত হিসাবে।
<?php
/*
Template Name: Full-width page layout
Template Post Type: post, page, product
*/
আপনি নিম্নলিখিত পৃষ্ঠাগুলিতে এটি সম্পর্কে আরও তথ্য পেতে পারেন।
https://wptavern.com/wordpress-4-7-brings-custom-page-template-functionality-to-all-post-tyype https://make.wordpress.org/core/2016/11/03/post টাইপ-টেমপ্লেট-ইন-4-7 /
আপনি ফাইল তৈরি করে কাস্টম পোস্ট ধরণের জন্য টেম্পলেট তৈরি করতে পারেন, উদাহরণস্বরূপ:
single-mycustomposttype.php
কোডেক্সে টেম্পলেট হায়ারার্কি দেখুন ।
PS : এটি ইতিমধ্যে উত্তর দেওয়া হয়েছে।
আমার জন্য কী কাজ করে তা এখানে:
add_filter('single_template', function($original){
global $post;
$post_name = $post->post_name;
$post_type = $post->post_type;
$base_name = 'single-' . $post_type . '-' . $post_name . '.php';
$template = locate_template($base_name);
if ($template && ! empty($template)) return $template;
return $original;
});
এইভাবে কাস্টম পোস্ট টাইপের একটি পোস্ট দেওয়া হয়েছে foobar
এবং hello-world
উপরের কোডের একটি স্লাগ single-foobar-hello-world.php
টেমপ্লেটটি লোড করবে , যদি এটি বিদ্যমান থাকে।
গুগলের মাধ্যমে যারা এই থ্রেডে পৌঁছেছেন তাদের জন্য, ডাব্লুপি 4.7 সমস্ত পোস্ট ধরণের টেমপ্লেট চালু করেছিল। পুরো ওয়াকথ্রুয়ের জন্য ডাব্লুপি কোর করুন See আপনি আর আপনার সমস্ত সিপিটির জন্য একটি টেম্পলেটটিতে সীমাবদ্ধ নন, আপনি পৃষ্ঠাগুলির মতো পোস্টের মাধ্যমেও পৃথক টেম্পলেট পোস্ট পোস্ট করতে পারেন।
এটি সামান্য পুরানো তবে আপনি এটি ব্যবহার করে দেখতে পারেন:
কাস্টম পোস্ট ধরণের জন্য একটি টেম্পলেট তৈরি করুন:
single-*custom-post-type-slug*.php
ফাইলটির স্লাগটি পরীক্ষা করা উচিত এবং কোনও ফাইল উপস্থিত থাকলে তা যাচাই করা উচিত, যদি না থাকে তবে ডিফল্ট টেম্পলেট ফাইলের ফ্যালব্যাক:
<?php
$slug = get_post_field( 'post_name', get_post() );
$slug = ( locate_template( 'templates/*custom-post-type-slug*/' . $slug . '.php' ) ) ? $slug : 'default';
get_template_part( 'templates/*custom-post-type-slug*/' . $slug );
?>
আপনার কাস্টম পোস্টের প্রকৃত স্লাগের সাথে কাস্টম-পোস্ট-টাইপ-স্লাগের সমস্ত উদাহরণ প্রতিস্থাপন করুন ।
আমি ব্যবহারের স্বাচ্ছন্দ্য এবং সাংগঠনিক উদ্দেশ্যে এটি করি। থিমের মূল ফোল্ডারে থাকা সমস্ত ফাইলের চেয়ে এটি আমার কাছে পরিষ্কার মনে হয়।
উদাহরণস্বরূপ ফোল্ডার কাঠামো:
themeroot
| |single-cases.php
|-templates
| --cases
| |default.php
| |case-one.php
| |case-two.php
নীচে যেমন একটি টেম্পলেট ফাইল তৈরি করুন এবং সেই টেমপ্লেট-আইটেমের নাম রেখে আইটেম পোস্টের ধরণের সামগ্রীগুলি প্রদর্শন করুন যা আপনার ইচ্ছা হিসাবে আইটেম হিসাবে নামী পৃষ্ঠায় প্রথমে তৈরি করুন। আপনার তৈরি পৃষ্ঠার জন্য সেই টেম্পলেটটি নির্বাচন করুন।
<div class="container">
<div class="row">
<div class="col-md-9">
<div class="panel panel-default text-center">
<?php $loop = new WP_Query( array( 'post_type' => 'items', 'posts_per_page' => 5 ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php the_title();?>
<?php if(has_post_thumbnail() ) { the_post_thumbnail(); } ?>
<?php the_content();?>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
</div>
</div>
</div>
</div>
এটি করা খুব সহজ।
আপনার থিমের মূল ডিরেক্টরিতে একটি নতুন পিএইচপি ফাইল তৈরি করুন এবং এটিকে শীর্ষে যুক্ত করুন:
<?php /*
* Template Name: My custom view
* Template Post Type: Post_typename // here you need to add the name of your custom post type
*/ ?>
সম্পূর্ণ উদাহরণ নিম্নলিখিত হিসাবে হবে:
<?php /*
* Template Name: My custom view
* Template Post Type: Post_typename // here you need to add the name of your custom post type
*/ ?>
<?php get_header();?>
<div class="container pt-5 pb-5">
<?php if (has_post_thumbnail()):?>
<img src="<?php the_post_thumbnail_url('largest');?>" class="img-fluid">
<?php endif;?>
<?php if (have_posts()) : while (have_posts()) : the_post();?>
<?php the_content();?>
<?php endwhile; endif;?>
</div>
<?php get_footer();?>
আমরা কাস্টম পোস্ট টেম্পলেট প্লাগইন ব্যবহার করে আরেকটি সমাধান নিয়ে কাজ করেছি