यह क्यों नहीं दिखाता है?
जब आप 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 के बाद से मौजूद है - कम से कम यह वही है जो phpDocBlock बताता है: आप एक संग्रह में प्रत्येक पोस्ट के लिए तारीख क्यों प्रदर्शित करना चाहेंगे? एक संग्रह इस तरह दिखता है:
+--------------+
| 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()
फ़ंक्शन के रूप में ।