2011-04-22 22 views
6
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
.... 
<?php endwhile; endif; ?> 

उपरोक्त कुएं पर कोड को समझ सकता है, जबकि सरलीकृत करने में सहायता करें।वर्डप्रेस

1, क्या मैं स्थिति और स्थिति को हटा सकता हूं? सीधे <?php the_post();?> का उपयोग कर।

2, मुझे लगता है कि if (have_posts())while (have_posts()) जैसा ही है। क्या यह अनावश्यक है?

उत्तर

3

# 1: एक पाश के बिना the_post कॉलिंग केवल आप एक ही पोस्ट प्रदर्शित करने देगा। यह एकल पद पृष्ठों पर वांछनीय हो सकता है, उदाहरण के लिए जहां while पाश अक्सर छोड़ दिया जाता है के लिए:

<?php 
// single.php 
if (have_posts()): 
    the_post(); 
?> 
<p><?php the_content(); ?></p> 
<? else: ?> 
<p>No post found.</p> 
<? endif ?> 

# 2: आप सही हैं - टुकड़ा तुम्हें तैनात अपने संयोजन में अनावश्यक है if और while का।

<?php 
if (have_posts()): 
    while (have_posts()): the_post(); 
?> 
<div class="post"><?php the_content(); ?></div> 
<?php endwhile; else: ?> 
<p>No posts found.</p> 
<?php endif; ?> 

इस मामले में if बयान के उपयोग आप अगर कोई पदों पर सभी कर रहे हैं कुछ प्रदर्शित करने के लिए अनुमति देता है:

सबसे विषयों में, हालांकि, इस प्रयोग है। अगर हम उस कोड में while लूप का उपयोग करना चाहते थे, तो बिना किसी पोस्ट के पेज कुछ भी आउटपुट नहीं करेंगे।

+0

ओह, अरे यह। मुझे यह कोड डिफ़ॉल्ट थीम single.php में उपयोग कर रहे हैं? यह एक अनावश्यक है! क्योंकि सिंगल.एफ़पी में, यह केवल एक पोस्ट है, जबकि लूप का उपयोग करना बेकार है। मैं सही हूँ? – zhuanzhou

+1

हां, यह अनावश्यक है, लेकिन इसके बारे में चिंता करने के लिए बहुत कुछ नहीं है। [वर्डप्रेस के डिफ़ॉल्ट विषय यह रूप में अच्छी तरह का उपयोग करता है] (http://phpxref.com/xref/wordpress/wp-content/themes/twentyten/single.php.source.html#l15)। –

1

while(have_postS()) स्वचालित रूप से have_postS()if(have_postS())

द्वारा के रूप में मूल्यांकन करेंगे लेकिन यह रूप में लंबे समय के लिए जारी रहेगा के रूप में यह true है (क्योंकि यह एक पाश है), तो आप पाश और कुछ तंत्र है कि पाश समाप्त हो जाता है करने के लिए है, तो while

का उपयोग

अन्य

एक बार if बेहतर होगा।

1

मैं Wordpress पता नहीं है, लेकिन इसके बारे में दिखता द्वारा, has_posts() या तो एक truthy या falsy मान देता है। while पाश केवल कार्यान्वित करता है, तो एक truthy मूल्य शर्त के रूप में पारित हो जाता है, तो हाँ, आप इसे एक whoopin 3 लाइनों को कम कर सकते हैं:

<?php while (have_posts()) : the_post(); ?> 
.... 
<?php endwhile;?> 

संपादित करें: क्यों कॉपी-पेस्ट कोड के रूप में इस के रूप में अभी तक एक और उदाहरण रखो बुरा है ...

+0

आपका कोड एंडिफ़ का उपयोग क्यों कर रहा है ?? अगर आपके कोड में कोई शर्त नहीं है? आपके उत्तर के लिए धन्यवाद। – zhuanzhou

+0

* फेसपाल्म * संपादित – Zirak