আপনারা হয়তো লক্ষ্য করে থাকবেন, অনেক ওয়ার্ডপ্রেস ব্লগে টিপস অথবা কমেন্টে সময় উল্লেখ করা থাকে একটু অন্যরকম ভাবে। সরাসরি সময় উল্লেখ না করে কতো সময় আগে টিপস বা কমেন্ট করা হয়েছে, তা উল্লেখ করা থাকে। যেমন, x মিনিট y সেকেন্ড আগে অথবা x মাস y দিন আগে। এভাবে সময় উল্লেখ করা কোন কঠিন বিষয় না, কিন্তু যারা এখনও জানেন না কিভাবে এটা করতে হয়, আজকের টিপসটি তাদের জন্য। আজকে আমি দেখাবো কিভাবে খুব সহজেই কতো সময় আগে টিপস বা কমেন্ট করা হয়েছে তা প্রদর্শন করাবেন। আপনি চাইলে টিপস বা কমেন্ট ছাড়া অন্য কোন উপলক্ষেও এটা ব্যবহার করতে পারেন।
ওয়ার্ডপ্রেসের নিজস্ব ফাংশন “সময় আগে” দেখানোর জন্য
ওয়ার্ডপ্রেস ব্যবহারের বড় সুবিধাগুলোর একটি হল এর বিভিন্ন বিল্টিন ফাংশন। ব্যবহারকারীদের সুবিধার কথা ভেবে ওয়ার্ডপ্রেস কতৃপক্ষ বিভিন্ন ফাংশন তৈরি করে রেখেছে, যেগুলো ব্যবহার করলে আর আলাদা করে কোডিং করার কোন প্রয়োজন পরে না। শুধু প্রয়োজনীয় ফাংশন কল করলেই কাজ হয়ে যায়। human_time_diff() তেমনি একটি ফাংশন, যা দিয়ে আপনি সহজেই দেখাতে পারবেন কতো সময় আগে টিপস বা কমেন্ট করা হয়েছে। তাহলে চলুন দেখে নেই কিভাবে এই ফাংশনটি কাজে লাগাতে হয়।
ফাংশনটির মধ্যে দুইটি প্যারামিটার ব্যবহার করা হয়েছে, যার একটি হল $from এবং অপরটি $to. প্রথমটিতে দিতে হবে টিপস বা কমেন্টের সময় এবং পরেরটি হবে বর্তমান সময়। এই দুই সময়ের মধ্যে পার্থক্য বের করে ফাংশনটি আপনাকে ফলাফল বের করে দিবে। ফলাফল হবে কতো সময় আগে টিপস বা কমেন্টটি করা হয়েছে। এখন আপনি যেখানে প্রদর্শন করাতে চান কতো সময় আগে টিপস বা কমেন্ট করা হয়েছে, সেখানে লুপের ভিতরে নিচের কোডটি বসিয়ে দিন।
<?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?>
get_the_time() হচ্ছে টিপস প্রকাশের সময়। কমেন্টের ক্ষেত্রে হবে get_comment_time(‘U’), অর্থাৎ নিচের কোডটির মতো।
<?php echo human_time_diff(get_comment_time ('U'), current_time('timestamp')) . ' ago'; ?>
ফাংশনটির ডাইনামিক উপস্থাপন
আপনি যদি একজন এক্সপার্ট হয়ে থাকেন, তাহলে চাইবেন একটু ডাইন্যামিক্যালি ফাংশনটি ব্যবহার করতে। এজন্য আপনাকে একটু কষ্ট করে আরেকটি ফাংশন নিজের মতো করে তৈরি করে নিতে হবে। আপনাদের সুবিধার কথা ভেবে আমি তেমনি একটি ফাংশন শেয়ার করবো। আপনাকে শুধুমাত্র functions.php ফাইলে নিচের কোডটি বসিয়ে দিতে হবে।
function time_ago( $type = 'post' ) { $diff = 'comment' == $type ? 'get_comment_time' : 'get_post_time'; return human_time_diff($diff('U'), current_time('timestamp')) . " " . __('ago'); }
এবার আপনি যেখানে প্রদর্শন করাতে চান কতো সময় আগে টিপস বা কমেন্ট করা হয়েছে, সেখানে লুপের ভিতরে নিচের কোডটি বসিয়ে দিন।
<?php echo time_ago(); ?>
ব্যস! কাজ শেষ। যদি টিপস হয়, তাহলে কতো সময় আগে প্রকাশিত হয়েছে তা প্রদর্শিত হবে এবং যদি কমেন্ট হয়, তাহলে কতো সময় আগে কমেন্টটি করা হয়েছে তা প্রদর্শিত হবে।
বাংলাতে “সময় আগে” দেখানো
যারা বাংলাতে ব্লগ পরিচালনা করে থাকেন, তাদের জন্য অবশ্য একটা সমস্যা হবে। সেটা হচ্ছে ভাষা সমস্যা। ফলাফলটি ইংরেজিতে প্রকাশ হয়ে থাকে। অর্থাৎ, “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); ?>
এই ফাংশনের মাধ্যমে আপনি টিপস বা কমেন্ট ছাড়াও অন্য যেকোনো কিছুর সময় কাল উল্লেখ করতে পারেন। যেমন, ব্যবহারকারী কতো সময় আগে নিবন্ধন করেছেন, কিংবা কতো আগে একজন তার স্ট্যাটাস আপডেট করেছেন, ইত্যাদি।
আরও অনেক ধরনের পদ্ধতি থাকতে পারে, কিন্তু আমার সেগুলো জানা নেই। আমি আমার মতো করে একটি পদ্ধতি বের করে নিয়েছি, তাই শেয়ার করলাম। যদি আপনাদের কাজে আসে তাহলে পরিশ্রম সার্থক হয়েছে ভাববো। সময় নিয়ে টিপসটি পড়ার জন্য এবং আপনার মূল্যবান পরামর্শের জন্য ধন্যবাদ।
nice post
Thank You
Nice post…
আমি চাচ্ছি Facebook এ পোষ্ট এর সময়ের মত করতে – যেমন- Just now , ৫ সেকেন্ড আগে, ৫ মিনিট আগে, ৫ ঘন্টা আগে, একদিন পর দেখাবে বারের নাম এবং সময়, এক সপ্তাহ পর দেখাবে তরিখ, মাস, বছর ও সময়।
আপনি একটা কাজ করতে পারেন: একটা কন্ডিশন দিয়ে দিন, সময় ২৪ ঘণ্টার বেশি হয়ে গেলে কতো আগে পোস্ট করা হয়েছে না দেখিয়ে পোস্টের দিন তারিখ দেখাবে। দিন ও তারিখ আপনি নিচের কোডটি পোস্টের লুপের মধ্যে বসায়ে আলাদা করতে পারবেন:
আর কোন প্রশ্ন থাকলে আমাদের প্রশ্ন ও উত্তর বিভাগে জিজ্ঞাসা করুন, ধন্যবাদ।