কিভাবে ওয়ার্ডপ্রেস ব্লগে বাংলাতে সময় উল্লেখ করবেন ‘মাস, ঘণ্টা এবং মিনিট আগে’ ফরম্যাটে

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

কিন্তু যারা বাংলাতে ব্লগ পরিচালনা করে থাকেন, তাদের জন্য অবশ্য একটা সমস্যা হবে। সেটা হচ্ছে ভাষা সমস্যা। ফলাফলটি ইংরেজিতে প্রকাশ হয়ে থাকে। অর্থাৎ, x months ago অনেকটা এরকম। এখন ব্লগটি বাংলাতে হবার কারনে আপনি অবশ্যই চাইবেন ফলাফল বাংলাতে প্রদর্শনের জন্য। সহজ এবং অনুচিত বুদ্ধি হল, ফাংশনটি খুঁজে বের করে ইংরেজি লেখাগুলো বাংলা করে দেওয়া, কিন্তু এজন্য আপনাকে কোঁড়ে হাত দিতে হবে যা আমি ব্যক্তিগত ভাবে সমর্থন করি না। তাহলে কিভাবে করবেন বাংলা? আমি একটি ফাংশন তৈরি করেছি এজন্য। বলবো না যে এটা স্ট্যান্ডার্ড, তবে আমার কাজ হয়ে যায় খুব ভালোভাবেই। নিচে আমি ফাংশনটি শেয়ার করলাম, আপনাদের ইচ্ছা হলে ব্যবহার করে দেখতে পারেন। কোডটি কপি করে functions.php ফাইলে বসিয়ে দিন।

function my_time_diff( $from ) {

	$to = current_time( 'mysql' );
	$from = strtotime($from);
	$to = strtotime($to);
	$diff = abs($to - $from);

	$years = floor($diff / (365*60*60*24));
	$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
	$weeks = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (7*60*60*24));
	$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
	$hours = floor($diff / (60*60));
	$minutes = floor(($diff - $hours * 60*60) / 60);
	$seconds = floor($diff - $hours * 60*60 - $minutes*60);

	if(($days == 7 || $days == 14 || $days == 21 || $days == 28) && $weeks > 0) {
		if($years == 0) {
			if($months > 0) { $time_ago = sprintf( _n( '%s মাস %s সপ্তাহ', '%s মাস %s সপ্তাহ', $months, $weeks ), $months, $weeks ); }
			elseif($months == 0) { $time_ago = sprintf( _n( '%s সপ্তাহ', '%s সপ্তাহ', $weeks ), $weeks ); }
		}
		else {
			if($months == 0) { $time_ago = sprintf( _n( '%s বছর %s সপ্তাহ', '%s বছর %s সপ্তাহ', $years, $weeks ), $years, $weeks ); }
			else { $time_ago = sprintf( _n( '%s বছর %s মাস %s সপ্তাহ', '%s বছর %s মাস %s সপ্তাহ', $years, $months, $weeks ), $years, $months, $weeks ); }
		}
	}
	else {
		if($years == 0) {
			if($months > 0 && $days == 0) { $time_ago = sprintf( _n( '%s মাস', '%s মাস', $months ), eng_to_ban($months) ); }
			elseif($months > 0 && $days != 0) { $time_ago = sprintf( _n( '%s মাস %s দিন', '%s মাস %s দিন', $months, $days ), eng_to_ban($months), eng_to_ban($days) ); }
			elseif($months == 0 && $days > 0) { $time_ago = sprintf( _n( '%s দিন', '%s দিন', $days ), $days ); }
			elseif($months == 0 && $days == 0 && $hours > 0) { $time_ago = sprintf( _n( '%s ঘণ্টা %s মিনিট', '%s ঘণ্টা %s মিনিট', $hours, $minutes ), $hours, $minutes ); }
			elseif($months == 0 && $days == 0 && $hours == 0 && $minutes > 0) { $time_ago = sprintf( _n( '%s মিনিট %s সেকেন্ড', '%s মিনিট %s সেকেন্ড', $minutes, $seconds ), $minutes, $seconds ); }
			elseif($months == 0 && $days == 0 && $hours == 0 && $minutes == 0) { $time_ago = sprintf( _n( '%s সেকেন্ড', '%s সেকেন্ড', $seconds ), $seconds ); }
		}
		else {
			if($months == 0) { $time_ago = sprintf( _n( '%s বছর %s দিন', '%s বছর %s দিন', $years, $days ), $years, $days ); }
			else { $time_ago = sprintf( _n( '%s বছর %s মাস %s দিন', '%s বছর %s মাস %s দিন', $years, $months, $days ), $years, $months, $days ); }
		}
	}
	return $time_ago;
}

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

<?php echo my_time_diff($from_time); ?>

$from_time এ দিবেন পোস্ট বা কমেন্ট প্রকাশের সময়। যেমন, লুপের ভিতরে ব্যবহার করলে পোস্টের টাইম দিতে পারেন $post->post_date, অর্থাৎ পুরো কোডটি হবেঃ

<?php echo my_time_diff($post->post_date); ?>

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

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

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

Level 2

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

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


টিউনস


আরও টিউনস


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


টিউমেন্টস

মূল্যবান টিউনের জন্য আপনাকে ধন্যবাদ

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

    @আসলাম মামুন: নির্বাচিত অংশে আপনি কিভাবে ফিচার ইমেজ সেট করছেন সেটা দেখতে হবে। না দেখে ধারনার উপর সঠিক সমাধান দেওয়া কঠিন হবে।

ভাই আপনের পদ্ধতি টা আমার কাছে সহজ মনে হইছে…। ধন্যবাদ।