ওয়ার্ডপ্রেস অ্যাডমিন প্যানেল টেবিলে একটি নতুন সর্টেবল কাস্টম কলাম যুক্ত করুন

ওয়ার্ডপ্রেস অ্যাডমিন প্যানেল টেবিলে ডিফল্ট যে সেটআপ আছে সেটাই কাজের জন্য যথেষ্ট, কিন্তু মানুষের চাহিদার তো আর শেষ নাই! মনের মধ্যে সবসময় ইচ্ছা করে একটু এরকম হলে ভালো হতো, একটু ওরকম হলে ভালো হতো!! তো আজকের টিপসটি আপনাদের সেই ইচ্ছার তৃষ্ণা মেটানোরি একটা প্রয়াস বলতে পারেন। আজকে আমি দেখাবো, ওয়ার্ডপ্রেস অ্যাডমিন প্যানেল টেবিলে কিভাবে নিজের ইচ্ছামতো একটি নতুন কাস্টম কলাম যুক্ত করবেন।

রেজিস্টার কাস্টম কলাম

উদাহরণ হিসেবে আমরা ওয়ার্ডপ্রেস পোস্ট লিস্ট টেবিলে একটি নতুন কলাম যুক্ত করবো। এজন্য প্রথমে কাস্টম কলাম রেজিস্টার করতে হবে। এই কাজটি করার জন্য একটি ফিল্টার manage_posts_columns ব্যবহার করা হয়ে থাকে। এখন, এই ফিল্টারটি ব্যবহার করে নতুন কলাম যুক্ত করার জন্য নিচের কোডটি functions.php ফাইলে বসিয়ে দিনঃ

add_filter('manage_posts_columns', ' t4b_new_post_columns ');
function t4b_new_post_columns($columns) {
	$columns['views'] = 'Views';
	return $columns;
}

উপরের ফাংশনটিতে একটি প্যারামিটার $columns নেওয়া হয়েছে যা সকল রেজিস্টার্ড কলামের জন্য array হিসেবে কাজ করে। একটি নতুন কলাম যুক্ত করার জন্য, আমাদেরকে শুধুমাত্র একটি নতুন উপাদান যুক্ত করতে হবে অ্যারের মধ্যে। উপরের কোডটিতে আমরা এই কাজটাই করেছি।

এই ফিল্টারটি ঠিকমতোই কাজ করে, কিন্তু এটি কাস্টম পোস্ট টাইপ সহ সকল পোস্ট ম্যানেজ পেজেই নতুন কলাম যুক্ত করে। সুতরাং, কেউ যদি নির্দিষ্ট পোস্ট টাইপ অনুযায়ী কাস্টম কলাম যুক্ত করতে চায়, তাহলে অন্য আরেকটি ফিল্টার manage_{$post_type}_posts_columns অথবা manage_edit-{$post_type}_columns ব্যবহার করতে হবে, যেখানে ‘{$post_type}’ হচ্ছে পোস্টের টাইপ।

উদাহরণস্বরূপ, যদি কাস্টম পোস্ট টাইপ product হয়ে থাকে, তাহলে উপরের কোডটিতে ফিল্টার হবে নিম্নরূপঃ

add_filter('manage_product_posts_columns', ' t4b_new_post_columns ');

অথবা

add_filter('manage_edit-product_columns', ' t4b_new_post_columns ');

বাঁকি কোডগুলো আগের মতোই থাকবে।

নতুন কলামে ভ্যালূ যুক্ত করা

নতুন কলাম যুক্ত করা হয়েছে, এখন আমাদের উপযুক্ত মান দ্বারা কলামটি পূরণ করতে হবে। এজন্য আমরা একটি অ্যাকশন হুক manage_posts_custom_column ব্যবহার করবো। সুতরাং, ভ্যালূ যুক্ত করার জন্য নিচের কোডটি functions.php ফাইলে বসিয়ে দিনঃ

add_action('manage_posts_custom_column',  't4b_show_new_columns');
function t4b_show_new_columns($column_name) {
	global $post;
	switch ($column_name) {
		case 'views':
			$views = get_post_meta($post->ID, 'post_views_count', true);
			echo $views;
			break;
		default:
	}
}

উপরের ফাংশনটিতে $column_name নামে একটি প্যারামিটার ব্যবহার করা হয়েছে। আমাদেরকে এটি চেক করতে হবে, যদি এটা views (যেটা আমরা আগেই রেজিস্টার করেছি) হয়, তাহলে আমরা কাস্টম ফিল্ড ভ্যালূ পাবো এবং ভ্যালূগুলোকে নতুন কলামে প্রদর্শন করাতে পারবো।

পেজের জন্য

পেজের জন্য ফিল্টার হবে manage_pages_columns এবং অ্যাকশন হবে manage_pages_custom_column নিচের কোড অনুযায়ীঃ

add_filter('manage_pages_columns', ' t4b_new_post_columns ');

এবং

add_action('manage_pages_custom_column',  't4b_show_new_columns');

ইউজার লিস্ট টেবিলের জন্য

আপনার ওয়ার্ডপ্রেস সাইটে যদি ইউজার রেজিস্ট্রেশন সিস্টেম চালু থাকে, তাহলে খুবি স্বাভাবিক মাঝে মাঝেই নতুন নতুন নিবন্ধিত ইউজার পাবেন। সকল ইউজারদের লিস্ট অ্যাডমিন প্যানেলের ইউজার লিস্টে গেলে পাওয়া যাবে। এখানেও আমরা আগের নিয়মে কাস্টম কলাম যুক্ত করতে পারবো। আমাদেরকে শুধু functions.php ফাইলে ফিল্টারের জন্য লিখতে হবে manage_users_columns নিচের কোডের মতোঃ

function t4b_modify_user_table( $column ) {
	$column['user_reg'] = 'নিবন্ধন তারিখ';
	return $column;
}
add_filter( 'manage_users_columns', 't4b_modify_user_table' );

এতেকরে ইউজার লিস্ট টেবিলে একটি নতুন কলাম যুক্ত হবে। এবার আমাদেরকে আরেকটি ফিল্টার manage_users_custom_column ব্যবহার করে কলামটিতে ভ্যালূ যুক্ত করতে হবে। এজন্য নিচের কোডটি functions.php ফাইলে বসিয়ে দিনঃ

function t4b_modify_user_table_row( $val, $column_name, $user_id ) {
	$user = get_userdata( $user_id );
	switch ($column_name) {
		case 'user_reg' :
			return $user->user_registered;
			break;
		default:
	}
	return $return;
}
add_filter( 'manage_users_custom_column', 't4b_modify_user_table_row', 10, 3 );

ব্যাস! ভ্যালু যুক্ত হয়ে গেলো। এখন ইউজার লিস্টে গেলে দেখবেন নিবন্ধন তারিখ নামে যেই নতুন কলাম নিয়েছিলেন, সেখানে কোন ইউজার কবে নিবন্ধন করেছে সেই তারিখ প্রদর্শিত হচ্ছে।

কাস্টম কলামকে সর্টেবল করা

যেই কলামটি সর্টেবল হিসেবে রেজিস্টার করবো তা ওয়ার্ডপ্রেসকে বলার জন্য নিচের ফিল্টারটি ব্যবহৃত হয়ঃ

manage_{$screen->id}_sortable_column

পোস্ট এবং পেজের ক্ষেত্রে, $screen->id হবে যথাক্রমে edit-post এবং edit-page, একিভাবে কাস্টম পোস্টের ক্ষেত্রে হবে edit-posttype. উদাহরণস্বরূপ পোস্টের ক্ষেত্রে নিচের কোডটি functions.php ফাইলে বসিয়ে দিনঃ

function post_sortable_custom_column_views ($columns) {
	$columns['post_views'] = 'post_views';
	return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'post_sortable_custom_column_views');

$column array এর key ভ্যালূ একটি সর্টেবল কলাম নির্দেশিত করে, এবং এর ভ্যালূ ওয়ার্ডপ্রেসকে বলে orderby হিসেবে ক্যুয়েরিতে কি সেট কতে হবে।

সর্টেবল কলামকে আরও নিখুঁতভাবে পরিচালনা করার জন্য, অর্থাৎ মেটা ভ্যালূ দ্বারা সর্ট করার জন্য নিচের কোডটি functions.php ফাইলে বসিয়ে দিনঃ

function sort_sortable_custom_column_views( $vars ) {
	if ( isset( $vars['orderby'] ) && 'post_views' == $vars['orderby'] ) {
		$vars = array_merge( $vars, array(
			'meta_key' => 'post_views_count', //Custom field key
			'orderby' => 'meta_value_num') //Custom field value (number)
		);
	}
	return $vars;
}
add_filter( 'request', 'sort_sortable_custom_column_views' );

এই ফাংশনটি চেক করবে, যদি আমাদের ক্যুয়েরি post_views দ্বারা অর্ডারিং করা হয়, তাহলে এটা ওয়ার্ডপ্রেসকে বলবে post_views_count পোস্ট মেটার ভ্যালূকে সংখ্যাসূচকভাবে অর্ডার করার জন্য।

ইউজার টেবিলে যেই কলাম যুক্ত করা হয়েছে সেটিকেও সর্ট করা সম্ভব। এজন্য manage_users_sortable_columns ফিল্টার ব্যবহার করতে হবে। সর্টিং করার জন্য আপনাকে নিচের কোডটুকু functions.php ফাইলে বসিয়ে দিতে হবেঃ

function t4b_sortable_user_table_columns( $column ) {
	$column[ 'user_reg' ] = 'user_registered';
	return $column;
}
add_filter( 'manage_users_sortable_columns', 't4b_sortable_user_table_columns' );

এবার নিবন্ধন তারিখ কলামের উপর মাউস ধরলে দেখবেন একটা তীর চিহ্ন দেখাচ্ছে। চিহ্নটির উপর ক্লিক করে আপনি কলামটিকে খুব সহজেই অ্যাসেন্ডিং অথবা ডিসেন্ডিং অর্ডারে সাজাতে পারবেন। এতে করে আপনি এখন খুব সহজেই দ্রুত জানতে পারছেন আপনার ব্লগে সর্বশেষ কে নিবন্ধন করেছে।

এভাবে নিজের পছন্দানুযায়ী যেকোনো ডাটা নতুন কাস্টম কলাম হিসেবে ওয়ার্ডপ্রেস অ্যাডমিন প্যানেলের টেবিল লিস্টে যুক্ত করা যাবে। এজন্য আরও বিস্তারিত পড়াশুনা করতে হবে। উপরের উদাহরণগুলো শুধুমাত্র একটা ধারনা হিসেবে কাজে লাগতে পারে।

আজকের মতো এ পর্যন্তই। আগামীতে আশা করি নতুন কোন টিপস নিয়ে হাজির হবো। যদি টিপসটি উপভোগ করে থাকেন এবং আপনার উপকারে এসে থাকে, তাহলে অবশ্যই শেয়ার করে অন্যদের জানাবেন। যদি আপনার কোন মতামত থেকে থাকে অথবা আপনি কোন কিছু সুপারিশ করতে চান, নিশ্চিন্তে নিচে মন্তব্য করতে পারেন। সময় নিয়ে টিপসটি পড়ার জন্য এবং আপনার মূল্যবান পরামর্শের জন্য ধন্যবাদ।

টিপসটি সর্বপ্রথম TiPS4BLOG.com এ প্রকাশিত হয়।

Level 2

আমি মোঃ আলম। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 10 বছর 10 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 14 টি টিউন ও 27 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।

মোঃ আলম TiPS4BLOG এর প্রতিষ্ঠাতা লেখক এবং Realwebcare এর ম্যানেজিং পার্টনার। রিয়েলওয়েবকেয়ারে ওয়েব হোস্টিং, ডোমেইন রেজিস্ট্রেশান, ওয়েব ডেভেলপমেন্ট ও ডিজাইন সার্ভিসের পাশাপাশি সে ব্লগিং এর বিভিন্ন টিপস এবং ট্রিকস নিয়ে তার নিজস্ব ব্লগ TiPS4BLOG এ লেখালেখি করে।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

অনেকদিন পর দেখছি, খুবই চমকপ্রদ একটি পোস্ট করলেন। শেয়ার করার জন্য অসংখ্যক ধন্যবাদ। এমনিতেই আপনার বেশ কয়েকটি টিউন দেখেছি, ভাল লেগেছে। আরেকটি কথা অাপনার তৈরিকৃত ফিচার পোস্ট প্লাগিনটি অসম্ভব ভাল লেগেছে এবং ব্যবহার করছি। যাইহোক আপনার কাছে একটি বিষয়ে রিভিউ করছি রেস্পন্স করলে উপকৃত হই। যথারুপ-
ওয়ার্ডপ্রেস সাইটের পোস্ট ক্যাটাগরীকে টিটির মত ২ টি কলামে কিভাবে শো করব? আমি টিটিতে বেশ কয়কেটি টিউন এবং আমার পদ্ধতি অনুসরন করে সফল হয় নাই। এটির কোন পদ্ধতি আপনার জানা থাকলে শেয়ার করলে উপকৃত হই। পরিশেষে ভাল থাকবেন।

আপনাকেও অসংখ্য ধন্যবাদ মন্তব্যের জন্য। উৎসাহ পেলাম ভালো কিছু লেখার। ওয়ার্ডপ্রেসে অনেককিছুই থিমের উপর নির্ভর করে। একই কোড সব থিমে সাপোর্ট নাও করতে পারে। ক্যাটাগরিকে ২ টি কলামে প্রদর্শনের সবথেকে নির্ভরযোগ্য উপায় হলো সিএসএস এডিট করে নেওয়া। আমার ব্লগে প্রশ্ন ও উত্তর নামে একটি সিস্টেম চালু আছে। এই প্রশ্নটাই আপনি ওখানে করলে আমার জন্য সুবিধা হতো।

    @মোঃ আলম: ধন্যবাদ। তবে এখানে যদি এই সম্পর্কে একটি টিউন করেন তাহলে আমার মত অনেকের সুবিধা হবে। পরিশেষে Best of Luck!!

আপনি আমাকে আপনার ব্লগের লিংকটা দেন, আমি দুই কলাম করে দিবো।