কেন দেখায় না?
আপনি যখন the_date()
ফাংশনের উত্সটি দেখুন , তখন আপনি দুটি গ্লোবাল লক্ষ্য করবেন:
global $currentday, $previousday;
এবং তারপরে একটি নিয়ম আছে যদি দেখানোর তারিখ থাকে ... না হয়। চেকটি এর সাথে করা সমান is_new_day()
:
if ( $currentday != $previousday ) {
// show date
// Set global
$previousday = $currentday;
}
// else
return null;
আপনি দেখতে পাচ্ছেন, $previousday
তাত্ক্ষণিকভাবে সেট হয়ে যায় $currentday;
। সুতরাং এটি একবার প্রতিধ্বনি হয়। ঠিক তার পরে, উভয় দিন একই এবং চেক ব্যর্থ হবে। এ কারণেই আপনার প্রথম পোস্টটি এটি প্রদর্শিত হয়, তবে অন্যরা এটি প্রদর্শন করে না।
কেন দেখায়?
যদি আপনি নিজেকে জিজ্ঞাসা করেন যে কেন এটি বিশ্বব্যাপী এককালীন হওয়ার পরে একের বেশি তারিখ দেখায়, তবে আপনাকে একবার নজর দিতে হবেsetup_postdata()
। এই ফাংশনটি ডেকে the_post();
আনে এবং লুপের মধ্যে একটি একক পোস্টের জন্য সমস্ত কিছু সেট আপ করার জন্য দায়ী।
if ( have_posts() )
{
while ( have_posts() )
{
the_post(); # <-- Calls setup_postdata( $post );
// your loop stuff here
}
}
এর ইন্টার্নালগুলি setup_postdata()
বোঝা বেশ সহজ (কমপক্ষে গ্লোবালগুলি কী সেট করে) তার জন্য:
$currentday = mysql2date('d.m.y', $post->post_date, false);
$currentmonth = mysql2date('m', $post->post_date, false);
তাই চলন্ত অংশ $previousday
বিরুদ্ধে $currentday
বিশ্বব্যাপী সেট পরার এবং চেক। আর যদি না হয় নতুন দিন , the_date()
কিছু প্রদর্শন করবে না।
আপনার পোস্টগুলি সম্পূর্ণ ভিন্ন দিনে সেট করুন এবং হঠাৎ আপনি প্রতিটি পোস্টে তারিখটি উপস্থিত হতে দেখবেন।
এর পিছনে কী ধারণা?
আসলে ধারণাটি খুব সহজ এবং v0.7.1 সাল থেকে বর্তমান - পিএইচপিডকব্লক কমপক্ষে এটি যা বলেছে: আপনি কেন কোনও সংরক্ষণাগারে প্রতিটি পোস্টের জন্য তারিখটি প্রদর্শন করতে চান? একটি সংরক্ষণাগার এটির মতো দেখাচ্ছে:
+--------------+
| 28.10.2014 |
+--------------+
| Post Title A |
| Post Title B |
+--------------+
| 29.10.2014 |
+--------------+
| Post Title C |
| Post Title D |
+--------------+
আপনি কি এর সাথে একমত নন? ঠিক আছে, তাহলে আপনি কেবল এমন কোনও ফাংশন ব্যবহার করছেন যা পুরোপুরি আলাদা কিছু হওয়ার উদ্দেশ্যে তৈরি হয়েছিল।
কেন get_the_date()
কাজ করে এবং কীভাবে এটি সঠিক উপায়ে ব্যবহার করবেন
এটি / অন্য কোনও the_date()
ক্রিয়াকলাপে (গ্লোবাল চেক) দ্বারা প্রভাবিত হয় না । এছাড়া নেই না ফিল্টার আছে। কীভাবে ঠিক করব? সরল:
echo apply_filters( 'the_date', get_the_date(), get_option( 'date_format' ), '', '' );
এটি the_date
আপনার কাস্টম আউটপুটটিতে ফিল্টারের সাথে সংযুক্ত যে কোনও কলব্যাক যুক্ত করে । এটি ডিফল্ট date_format
হিসাবে ডিফল্ট বিকল্প সেটিংটিও ব্যবহার করে - যা the_date()
পাশাপাশি ব্যবহৃত হয় । এবং এটি কোনও before
এবং after
মানগুলি এড়িয়ে যায় - আবার, ঠিক ঠিক the_date()
ফাংশন হিসাবে ।