2010-07-22 31 views
7

के अंदर वर्तमान पोस्ट गिनती प्राप्त करें जब लूप के अंदर, मैं वर्तमान पोस्ट गिनती पुनर्प्राप्त करना चाहता हूं।वर्डप्रेस लूप: लूप

उदाहरण के लिए, प्रत्येक 3 पोस्ट के बाद, मैं एक विज्ञापन डालना चाहता हूं।

तो, मैं लूप गिनती का मूल्य कैसे प्राप्त करूं?

उत्तर

19

वर्तमान पोस्ट पुनरावृत्ति प्राप्त करने के लिए आप WP_Query ऑब्जेक्ट इंस्टेंस के current_post सदस्य का उपयोग कर सकते हैं;

while (have_posts()) : the_post(); 

    // your normal post code 

    if (($wp_query->current_post + 1) % 3 === 0) { 

     // your ad code here 

    } 

endwhile; 

ध्यान दें, यदि आप एक समारोह के अंदर इस का उपयोग कर रहे हैं, तो आप $wp_query वैश्वीकृत की आवश्यकता होगी।

+0

मैंने इस विधि को आजमाया। विज्ञापन हर 3 पदों के पहले और बाद में डाला जा रहा है! मैं इसे केवल 3 पदों के बाद विज्ञापन डालने के लिए कैसे प्राप्त करूं। –

+1

@ कार्टिकराव भविष्य के संदर्भ के लिए, यह उत्तर कभी भी थोड़ा सा दोषपूर्ण है। चूंकि इंडेक्स 0 से शुरू होते हैं, पहली बार सशर्त चलाया जाता है (जबकि लूप का पहला पुनरावृत्ति), यह वास्तव में 'सत्य' वापस कर देगा क्योंकि 0 मॉड्यूलस कोई वास्तविक संख्या हमेशा 0 होती है। विज्ञापन कोड को पहले आपके सामने गलत तरीके से डाला जा रहा है पोस्ट, चौथी पोस्ट, सातवीं पोस्ट - आदि अपडेट कोड को पढ़ना चाहिए: '($ wp_query-> current_post + 1)% 3'। –

+1

@AdamMcAththur चौथे और सातवें पदों से पहले विज्ञापन कोड डालने * सही * प्रश्न विवरण दिया गया है जिसमें कहा गया है कि विज्ञापनों को "हर 3 पदों के बाद * * डाला जाना चाहिए *। आप सही हैं कि पहले पोस्ट से पहले कोई विज्ञापन सम्मिलित नहीं होता है, लेकिन आपका प्रस्तावित फ़िक्स - जो अनुरोध के अनुसार तीसरे/6 वें/9वें पदों की बजाय दूसरी/5 वीं/8 वीं पोस्ट के बाद विज्ञापन डालेगा - नहीं या तो। –

0

एक चर को बढ़ाने क्यों नहीं, फिर आवश्यकतानुसार अपने विज्ञापन प्रदर्शित करें?

while(LOOP) 
    echo $i%3==0 ? $ad : ''; 
    $i++ 
0

अनिश्चित क्यों, लेकिन सुझाव दिया तरीकों मेरे लिए बाहर काम नहीं किया, मैं का सहारा लेना पड़ा निम्नलिखित

$loop_counter = 1; 
while($query->have_posts()) 
{ 
    //Do your thing $query->the_post(); etc 

    $loop_counter++; 
} 

वैश्विक के साथ खेल अगर आप मुझसे पूछें अधिक सुरक्षित।