ওয়ার্ডপ্রেসে পোস্ট একটা পোস্ট টাইপ, পেইজ একটা পোস্ট টাইপ, ইমেজ গুলো একটা পোস্ট টাইপ।যেমন যদি কেউ স্লাইডার প্লাগিন ব্যবহার করে থাকেন, তাহলে ঐ স্লাইডার যুক্ত করার অপশনটা একটা পোস্ট টাইপ। আমাদের দরকার অনুযায়ী এরকম কাস্টম পোস্ট টাইপ তৈরি করে নিতে পারি আমরা। এবং প্রয়োজন অনুযায়ী সে গুলোকে কোয়েরী করে যে কোন পেইজ, পোস্টে, বা নতুন পেইজ টেমপ্লেটে দেখাতে পারি। কাস্টম পোস্ট টাইপ তৈরি করা খুবি সহজ। তার জন্য কাস্টপ পোস্ট টাইপের জন্য একটা ফাংশন লিখতে হবে। ফাংশনটি লিখব এভাবেঃ
function create_posttype() { register_post_type( 'News', array( 'labels' => array( 'name' => __( 'News' ), 'singular_name' => __( 'news' ) ), 'public' => true, 'supports' => array( 'title', 'editor' ), 'rewrite' => array('slug' => 'news'), ) ); }
ফাংশনটি ওয়ার্ডপ্রেস হুকে রেজিস্টার করার জন্য লিখবঃ
add_action( 'init', 'create_posttype' );
এ কোড গুলো functions.php ফাইলে যুক্ত করে দিতে হবে। functions.php সেভ করে করলে আমরা দেখতে পাবো আমাদের ড্যাশবোর্ডে নতুন একটি মেনু যুক্ত হয়েছে। News নামে। সেখানে আমরা আমাদের সদ্য তৈরিকৃত নিউজ পোস্ট টাইপে নিউজ যুক্ত করতে পারব।
পোস্ট টাইপ তো তৈরি হলো, এর পরের কাজ হচ্ছে আমাদের পোস্ট টাইপের পোস্ট গুলোকে দেখানো। তার জন্য একটা পেইজ টেমপ্লেট তৈরি করে নিব। ওয়ার্ডপ্রেস পেইজ টেমপ্লেট তৈরি করা নিয়ে বিস্তারিত একটি লেখা রয়েছেঃ
এখন ঐ পেইজ টেমপ্লেটে আমাদের পোস্ট গুলো কোয়েরি করলেই সেখানে দেখাবে। আমি সিম্পল কোয়েরি করার কোড লিখে দিলাম। নিজের মত করে স্টাইল ট্যাগ বসিয়ে নেওয়া যাবেঃ
<?php /* Template Name: Location */ ?> <?php get_header(); ?> <?php // The Query $args = array('post_type' => 'news', 'posts_per_page' => 10 ); query_posts( $args ); // The Loop while ( have_posts() ) : the_post(); ?> // showing post title. <h1><?php the_title(); ?></h1> // showing post content <?php the_content(); ?> <?php endwhile; // Reset Query wp_reset_query(); ?> <?php get_footer(); ?>
এটা যে কোন ওয়ার্ডপ্রেস পোস্ট কোয়েরীর মতই। পার্থক্য হচ্ছে এখানে post_type টা যুক্ত করতে হয়। post_type এর ভ্যালু হবে আমাদের কাস্টম পোস্ট টাইপের slug ভ্যালু। আমাদের ভ্যালু হচ্ছে news. এভাবে আমরা আমাদের তৈরি করা কাস্টম পোস্ট টাইপ যে কোন জায়গায় দেখাতে পারি।
কাস্টম পোস্ট টাইপে আমরা শুধু টাইটেল এবং কন্টেন্ট লেখার অপশন যুক্ত করেছি। আরো অপশন যুক্ত করতে চাইলেঃ
function create_posttype() { register_post_type( 'News', array( 'labels' => array( 'name' => __( 'News' ), 'singular_name' => __( 'news' ) ), 'public' => true, 'has_archive' => true, 'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'custom-fields', 'revisions' ), 'taxonomies' => array('category'), 'rewrite' => array('slug' => 'news'), ) ); }
উপরের পোস্ট টাইপে আমরা আরো নতুন কিছু সাপোর্ট যুক্ত করেছি। যেমন ক্যাটেগরি যুক্ত করার অপশন, excerpt যুক্ত করার অপশন, thumbnail যুক্ত করার অপশন এবং custom-fields যুক্ত করার অপশন।
কাস্টম পোস্ট টাইপে যদি আমরা custom-fields বা মেটা ডাটা যুক্ত করি, তা দেখানোর জন্য লিখতে পারিঃ
<?php echo get_post_meta($post->ID, "meta-data-name", true); ?>
কাস্টম পোস্টের ক্যাটেগরি অনুযায়ী কোয়েরি করার জন্য ওয়ার্ডপ্রেসের ডিফল্ট পোস্ট যেভাবে কোয়েরি করি, ঠিক সে ভাবেই করা যাবে। অর্থাৎ আর্গুমেন্টে ‘category_name’ => ‘categoryname’ অথবা ক্যাটেগরি আইডি অনুযায়ী ‘cat’=>’id’ যুক্ত করে দিলে ক্যাটেগরি অনুযায়ী কাস্টম পোস্ট গুলো কোয়েরি করা যাবে।
ফাংশনটি ওয়ার্ডপ্রেস হুকে
যুক্ত করতে হবে। হুক মানে কি।
এ দুইটা পোস্ট পড়তে পারেন। ধারণা পাবেনঃ
http://goo.gl/IBqRKx
http://goo.gl/CTD3nk
Amio Bujhlam Na.. Hook Ta ki ?
vai amio bujhlam na huk mani ki . plz clear
please discuss about hook
Hook Ki vai
Kind of Registration!
কাস্টম পেজে পোস্ট শো করালে তারপর হেডারে link permalik কোডটা ইউজ করালে কাস্টম পোষ্টটি single php তে শো করে না। কি করে এই সমস্যা সমাধান করতে পারি?
ভাইয়া আমি একটা বুঝতাছি না। custom post type এর এর post গুলোর category list তৈরি করার পর সেগুলোকে sidebar এর category list এ নিয়ে আসব কেমনে?