পোস্ট ফরম্যাট থেকে সবচেয়ে বেশি সুবিধা পাওয়া : কন্টেন্ট ব্যবস্থাপনার যন্ত্রপাতি
() translation by (you can also view the original English article)
পোস্ট ফরমাট ব্যবহার করে কুয়েরি করা
আমি জানি পোস্ট ফরমাট সম্পর্কে আগে বলেছিলাম যে পোস্ট ফরম্যাট কোন ব্যবস্থাপনার যন্ত্র বা মাধ্যম নয় যতক্ষণ না আপনি আপনার ভিডিওকে ভিডিও হিসাবে, ছবি কে ছবি হিসাবে ইত্যাদি ব্যবহার করেন , তাহলে আপনি সেটা ব্যবহার করতে পারেন আপনার সাইটকে ব্যবস্থাপনা করতে। একই টেক্সনোমি বার বার ব্যবহার করার কোন মানে হয় না। বিশেষকরে যেহেতু পোস্ট ফরম্যাট সেট করা হয় "post_format" টেক্সনোমি ব্যবহার করে।
তার মানে এখন আমরা টেক্সনোমি দিয়ে কুয়েরি করার জন্য আগের ধাপে ব্যবহৃত কুয়েরির মত কুয়েরি ব্যবহার করতে পারি। টেক্সনোমি দিয়ে এই কুয়েরিতে আমরা এখন "post_format" টেক্সনোমি ব্যবহার করব। WP_Query
এর আর্গুমেন্ট হিসাবে আবার আমরা ব্যবহার করব tax_query
। কোট ফরম্যাট বা quote format এর সকল পোস্ট কুয়েরি করার জন্য আমরা আমাদের WP_Query
টি নিচের মত তৈরি করবঃ
1 |
$args = array( |
2 |
'post_type' => 'post', |
3 |
'tax_query' => array( |
4 |
array( |
5 |
'taxonomy' => 'post_format', |
6 |
'field' => 'slug', |
7 |
'terms' => 'post-format-quote', |
8 |
)
|
9 |
)
|
10 |
);
|
11 |
|
12 |
$query = new WP_Query( $args ); |
লক্ষ করুন উপরের উদাহরনে term এর সামনে "post-format-" কে যুক্ত করা হয়েছে। আরো মনে রাখবেন যে একাধিক পোস্ট ফরম্যাট ব্যবহার করে কুয়েরি করার জন্য আমরা tax_query
এর মধ্যে ব্যবহৃত terms আর্গুমেন্টের মধ্যে অনেক গুলো টার্মস/terms সহ একটি এরে/array দিতে পারি।
একটি পোস্ট ফরম্যাট মেনু তৈরি করা
আপনার সাইটে যদি আল্প কিছু পোস্ট ফরম্যাটে অনেক পোস্ট থাকে , তাহলে আপনি হয় চাইবেন প্রত্যেকটি পোস্ট ফরম্যাটকে হাইলাইট করতে। উদাহরণ স্বরূপ, মনে করুন আপনি একজন চিত্র শিল্পী, আপনি আপনার ভিডিও আর ছবি কে দেখানোর জন্য আপনার ব্লগটি ব্যবহার করছেন, আর আপনি পোস্ট ফরম্যাট ব্যবহার করছেন। তাহলে আপনি আলাদাভাবে আপনার সকল পোস্টের একটি মেনু তৈরি করতে পারেন ভিডিও ও ছবি ফরমাটে ।
প্রথম ধাপ হল WP_Query
এর জন্য একাধিক আর্গুমেন্ট সহ একটি এরে/array তৈরি করা , ঠিক যেভাবে উপরের উদাহরনে আমি আপনাদের দেখিয়েছি। তবে কিছু ব্যতিক্রম হল এইবার আমরা tax_query
এর আর্গুমেন্ট হিসাবে ব্যবহৃত terms আরগুমেন্টি বাদ দিয়েছি যা একটি নির্দিষ্ট পোস্ট ফরম্যাট সেট করছিল কুয়েরির জন্য আর লেবেল সহ একটি ফরমাটের এরে তৈরি করা হয়েছে যা মেনুর আউটপুটে ব্যবহার করা হবে।
এই বার দেখুন এই দুই এরেকে কেমন দেখায়ঃ
1 |
// প্রাথমিক WP_Query এর $args
|
2 |
$args = array( |
3 |
'post_type' => 'post', |
4 |
'posts_per_page' => 5, |
5 |
'tax_query' => array( |
6 |
array( |
7 |
'taxonomy' => 'post_format', |
8 |
'field' => 'slug', |
9 |
)
|
10 |
)
|
11 |
);
|
12 |
|
13 |
// যে ফরম্যাটগুলো দেখানো হবে
|
14 |
|
15 |
$formats = array( |
16 |
array( |
17 |
'name' => 'video', |
18 |
'label' => 'Videos' |
19 |
),
|
20 |
array( |
21 |
'name' => 'image', |
22 |
'label' => 'Photos' |
23 |
),
|
24 |
);
|
এই দুই এরে তৈরি করার পর, আমরা বর্তমান ফরম্যাটে সকল পোস্টের কুয়েরি করার জন্য এবং সকল পোস্টের একটি লিস্ট দেখানোর জন্য আমরা একটি foreach
লুপ তৈরি করতে পারি দ্বিতীয় এরে হতে। এর জন্য আমরা যা করব তা হল, প্রতিবার লুপ চলাকালে set()
ব্যবহার করে টার্মস আর্গুমেন্ট যোগ করব, WP_Query
এর একটি ইন্সট্যান্স তৈরি করব, এর মধ্যে লুপ করব এবং সব শেষে টার্মস আর্গুমেন্টকে আনসেট করব।
লুপ চলাকালে WP_Query
এর ভেতর আমরা get_term_link()
ব্যবহার করে একটি লিঙ্ক তৈরি করতে পারি পোস্ট ফরম্যাটের আরকাইভ পেজের, যা আসলে একটি টেক্সনোমি টার্ম আরকাইভ। আর প্রতিটা একক পোস্টের সাথে লিঙ্ক তৈরি করার জন্য আমরা get_permalink()
ব্যবহার করতে পারি । এই লুপটা দেখতে নিচের মত হবেঃ
1 |
echo '<nav class="menu">'; |
2 |
echo '<ul>'; |
3 |
foreach ( $formats as $format ) { |
4 |
//convert name key to the proper name for the term
|
5 |
$term_name = 'post-format-'.$format[ 'name' ]; |
6 |
//add a terms arg to the tax_query's args
|
7 |
$args[ 'tax_query' ][ 0 ][ 'terms' ] = $term_name; |
8 |
$query = new WP_Query( $args ); |
9 |
if ( $query->have_posts() ) { |
10 |
echo '<li>'.get_term_link( $term_name, 'post_format' ).'</li>'; |
11 |
echo '<ul class="'.$term_name.'-submenu">'; |
12 |
while ( $query->have_posts() ) { |
13 |
echo '<li><a href="'.get_permalink( $query->post->ID ).'" />'.get_the_title( $query->post->ID ).'</a></li>'; |
14 |
} //endwhile |
15 |
wp_reset_postdata(); |
16 |
echo '</ul></li>'; |
17 |
} //endif |
18 |
//before moving to next itteration remove the term from the WP_Query args
|
19 |
unset( $args[ 'tax_query' ][ 0 ][ 'terms' ] ); |
20 |
} //endforeach |
21 |
echo '</ul></nav>'; |
আপনার থিমে এই কোডগুলোকে সুন্দর মেনুর মত দেখাতে এর সাথে অতিরিক্ত আইডি বা ক্লাস যোগ করতে ভুলবেন না এবং আপনার প্রয়োজন অনুযায়ী পোস্ট ফরম্যাটকে পরিবর্তনও করতে পারেন।
প্রধান ব্লগ ইন্ডেক্স হতে পোস্ট ফরম্যাটকে অপসারণ করা ।
এখন যেহেতু আপনার পোস্ট ফরম্যাটের একটি মেনু আছে, আপনি হয়ত কখন চাইবেন কিছু নির্দিষ্ট ফরম্যাটের পোস্ট আপনার প্রধান ব্লগ ইন্ডেক্স হতে বাদ দিতে। এটি আপনার ব্লগকে একটি ব্লগ হিসাবে ব্যবহার করার সুযোগ দিবে এবং ভিডিও, ছবি , অডিও ফাইল অথবা অন্য যেকোন ফরম্যাটের পোস্টকে হাইলাইট করার সুবিধা দেবে পোস্ট ফরম্যাট মেনুকে।
নির্দিষ্ট ফরম্যাটের পোস্টগুলোকে রাখার জন্য আপনাকে একটি pre_get_post
ফিল্টার হুক ব্যবহার করে প্রধান কুয়েরি তে tax_query
যোগ করতে হবে। tax_query
টি দেখতে প্রায় একই রকম হবে যা আমি আপনাদেরকে ইতিমধ্যে দেখিয়েছি, শুধু অতিরিক্ত একটি আর্গুমেন্ট থাকবে যার সাহায্যে কিছু পোস্ট বাদ দেব কুয়েরি থেকে "operator" আর্গুমেন্ট ব্যবহার করে। অপারেটরটাকে আমরা "NOT IN" সেট করব তারপর যে পোস্টগুলো এই অপারেটরের সাথে মিলবে সেগুলো বাদ যাবে কুয়েরি হতে।
এই কুয়েরিটা একটা শর্তের মধ্যে ব্যবহার করা হবে is_home()
ব্যবহার করে যাতে এটি শুধু প্রধান ব্লগ ইন্ডেক্সকে প্রভাবিত করে।
এই দেখুন একশন হুক এবং কলব্যাক ফাংশন দেখতে কেমনঃ
1 |
add_action( 'pre_get_posts', 'slug_no_videos_home' ); |
2 |
function slug_no_videos_home( $query ) { |
3 |
if ( $query->is_home() && $query->is_main_query() ) { |
4 |
$tax_query = array( |
5 |
array( |
6 |
'taxonomy' => 'post_format', |
7 |
'field' => 'slug', |
8 |
'terms' => 'post-format-video', |
9 |
'operator' => 'NOT IN', |
10 |
)
|
11 |
);
|
12 |
$query->set( 'tax_query', $tax_query ); |
13 |
}
|
14 |
return $query; |
15 |
}
|
আপনি দেখতেই পারছেন আমরা NOT IN
অপারেটর ব্যবহার করে tax_query
টি তৈরি করেছি এবং তারপর set মেথড ব্যবহার করে tax_query
কে ব্লগ ইন্ডেক্সের প্রধান কুয়েরিতে যুক্ত করেছি।
যান এখন আপনি ভালোভাবে ফরমাটিং করতে পারবেন।
পাচ পর্বের এই সিরিজে আপনি শিখেছেন পোস্ট ফরম্যাট কি, কিভাবে আপনার থিমে এগুলোর জন্য সাপোর্ট দিবেন, কিভাবে এগুলো লুপে ব্যবহার করতে হয়, কিভাবে সেগুলোকে কাস্টম সিএসএস দিয়ে টার্গেট করতে হয়, কিভাবে সব গুলোকে এক সাথে আপডেট করতে হয় এবং সেগুলোকে কন্টেন্ট ব্যবহস্থাপনার টুল বা যন্ত্র হিসাবে ব্যবহার করা।
এই জ্ঞানকে অস্ত্র হিসাবে ব্যবহার করে আপনি অনেক শক্তিশালী থিম তৈরি করতে পারবেন যা তথ্য বহনকে একটা মৃদু ঠান্ডা বাতাসে পরিণত করবে।