has_post_format () बनाम get_post_format ()


10

मैंने अभी पोस्ट प्रारूपों की अवधारणा में कदम रखा था और सोच रहा था कि पोस्ट प्रारूप "एपीआई" प्रस्ताव से 3 कार्यों में से दो क्यों हैं, बिल्कुल समान कार्यक्षमता। निम्नलिखित दो अवधारणाओं पर विचार करें (A बनाम B):

if ( have_posts() )
{
    while ( have_posts() )
    {
        the_post();

        // A) has_post_format
        if ( has_post_format('format') )
        {
            the_excerpt(); // some special formating
        }

        // VERSUS:

        // B) 
        if ( get_post_format( $GLOBALS['post']->ID ) == 'format' )
        {
            the_excerpt(); // some special formating
        }

    } // endwhile;
} // endif;

क्या कोई मुझे समझा सकता है कि केवल पूर्व के बजाय वे दो कार्य क्यों हैं। get_post_format? यदि आप मुझे उन स्थितियों के कुछ उदाहरण पेश कर सकते हैं, जिनमें से कोई ऐसा नहीं है जो किसी अन्य कार्य को करने में सक्षम हो, तो मैं विशेष खुश रहूंगा और इसे +1 करूंगा।

जवाबों:


12

संपादित करें

has_post_format()$formatपहले पैरामीटर के रूप में , एक स्ट्रिंग की आवश्यकता होती है ; जिसका अर्थ है कि इसका उपयोग केवल स्पष्ट पोस्ट-प्रारूप प्रकारों के परीक्षण के लिए किया जा सकता है:

if ( has_post_format( $format ) {
    // Current post has the $format post format;
    // do something
}

यह निर्धारित करने के लिए कि किसी पोस्ट में कोई पोस्ट प्रारूप है, उपयोग करें get_post_format(), जो falseवर्तमान पोस्ट के पास असाइन किए गए पोस्ट प्रारूप में नहीं है, तो वापस आ जाएगा :

if ( false != get_post_format() ) {
    // Current post has a post format;
    // do something
}

ध्यान दें कि "मानक" एक वास्तविक पोस्ट-प्रारूप नहीं है, बल्कि उन पदों के लिए प्लेसहोल्डर शब्द है जिनके पास पोस्ट प्रारूप निर्दिष्ट नहीं है। आंतरिक रूप से, वर्डप्रेस falseइसके बजाय post-format-standard, "मानक" पोस्ट-प्रारूप प्रकार के लिए क्वेरी करने के लिए, आप बस उपयोग करेंगे if ( false == get_post_format() )

मूल

has_post_format() एक BOOLEAN मान लौटाता है, जो सशर्त के लिए उपयोगी है, जैसे:

if ( ! has_post_format() ) {
     // I'm a standard-format post; do something
}

या

if ( has_post_format( array( 'gallery', 'image' ) ) {
     // I'm a gallery or image format post; do something
}

get_post_format()वर्तमान पोस्ट प्रारूप प्रकार का स्ट्रिंग मान लौटाता है, जो कई मायनों में उपयोगी है। सबसे शक्तिशाली में से एक पोस्ट प्रारूप के आधार पर विभिन्न टेम्पलेट भाग फ़ाइलों को कॉल करना है, जैसे:

get_template_part( 'entry', get_post_format() )

जिसमें शामिल होगा, उदाहरण के लिए एक अलग प्रारूप के लिए "एंट्री-एक तरफ। एफपीपी", या एक मानक फॉर्मेट के लिए "एंट्री। एफपी"।


get_template_partवास्तव में स्मार्ट है!
कैसर

बेनेट - समाधान के रूप में अपने ए को चिह्नित करना भूल गया। Btw: सभी के रूप में अपवर्तित थे :)
kaiser

1
if ( ! has_post_format() ) {}1 (आवश्यक) तर्क के लापता होने के बाद से कम से कम (3.5-RC1 के रूप में) एक चेतावनी देता है। codex.wordpress.org/Function_Reference/has_post_format
ग्लुकप्रेस

4

निम्नलिखित भाग सही नहीं है, मैंने इस वृद्धि का अनुरोध करने के लिए एक टिकट बनाया है

has_post_format()अधिक लचीला है क्योंकि यह बनाता है has_term(), जो पर बनाता है is_object_in_term()। इसका मतलब है कि आप पोस्ट फॉर्मेट की एक सरणी पास कर सकते हैं और trueअगर पोस्ट में इनमें से कोई एक फॉर्मेट है तो यह वापस आ जाएगा ।

if ( has_post_format( array( 'aside', 'video' ) ) {
    // It's an aside or a video
}

मूल विनिर्देश टिकट में पहले से ही दोनों का उल्लेख किया गया है , get_post_format()और has_post_format()शायद इसलिए कि यह वर्गीकरण प्रणाली पर निर्माण करता है जिसमें दोनों कार्य भी हैं?


ओह, निश्चित रूप से, यह आगे बढ़ाता है कि आप यहां क्या कर सकते हैं ताकि आप अपने असली / झूठे उत्तर को वापस पाने के लिए विशिष्ट प्रारूपों पर जांच कर सकें।
ड्रू गोर्ली

मुझे लगता है कि अगर यह सिर्फ is_object_in_term()समारोह का उपयोग करने के लिए समझ में आता है ।
kaiser

1
@ जान फेब्री को पहले पैरामीटर के रूप में has_post_format()एक स्ट्रिंग की उम्मीद है । एक सरणी विफल हो जाएगी।
FUXIA

1
@toscho: डारन, मुझे पता था कि मुझे परीक्षण करना चाहिए था कि कोड में सिर्फ glancing के बजाय। फिर यह अन्य has_*कार्यों के साथ असंगत है - मैंने इसके लिए एक टिकट बनाया है
Jan Fabry

2
@ जान फेब्री यह आपके उत्तर को ठीक करने का एक बहुत अच्छा तरीका है। :)
FUXIA

3

सरल, has_post_format () एक सही / गलत (बूलियन) मान लौटाता है, जो IF स्टेटमेंट्स में उपयोगी है, जबकि get_post_format () पोस्ट फॉर्मेट देता है, यदि कोई मौजूद है, और शायद NULL या गलत है यदि वह वहां है। बूलियन मूल्यों का उपयोग करना यह सुनिश्चित करने का एक अच्छा साफ तरीका है कि आपकी परिस्थितियाँ हमेशा उसी तरह का व्यवहार करती हैं जिस तरह से आप उम्मीद कर रहे थे और has_post_format () फ़ंक्शन अच्छी आसान छोटी परिस्थितियों के लिए अनुमति देता है:

if ( has_post_format() ) {
  //yes we do
} else {
  //no we do not
}

if ( !has_post_format() ) {
  //no we do not
} else {
  //yes we do
}

इसके अलावा, यह सिर्फ अन्य मौजूदा वर्डप्रेस कार्यक्षमता के अनुरूप है। जबकि आपके विकल्प B से चीजें हो जाती हैं, इसके लिए थोड़ा अधिक विशिष्ट ज्ञान की आवश्यकता होती है, शायद थोड़ा ऊपर-औसत वर्डप्रेस उपयोगकर्ता से परिचित हो।


मुझे get_adjacent_postऔर next_post_linkसामान की याद दिलाता है ।
kaiser
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.