यदि कोई पोस्ट एक कस्टम पोस्ट प्रकार है तो परीक्षण कैसे करें?


103

मैं परीक्षण करने के लिए एक रास्ता खोज रहा हूं कि क्या कोई पोस्ट एक कस्टम पोस्ट प्रकार है। उदाहरण के लिए, कहते हैं, साइडबार मैं इस तरह कोड में डाल सकते हैं:

 if ( is_single() ) {
     // Code here
 }

मैं केवल एक कस्टम पोस्ट प्रकार के लिए कोड परीक्षण करना चाहता हूं।

जवाबों:



166
if ( is_singular( 'book' ) ) {
    // conditional content/code
}

ऊपर trueजब कस्टम पोस्ट प्रकार के एक पोस्ट को देख रहा है book:।

if ( is_singular( array( 'newspaper', 'book' ) ) ) {
    //  conditional content/code
}

ऊपर trueजब कस्टम पोस्ट प्रकारों की एक पोस्ट देख रहा है: newspaperया book

ये और अधिक सशर्त टैग यहां देखे जा सकते हैं


27

इसे अपने में जोड़ें functions.php, और आपके पास लूप के अंदर या बाहर की कार्यक्षमता हो सकती है:

function is_post_type($type){
    global $wp_query;
    if($type == get_post_type($wp_query->post->ID)) 
        return true;
    return false;
}

तो अब आप निम्नलिखित का उपयोग कर सकते हैं:

if (is_single() && is_post_type('post_type')){
    // Work magic
}

धन्यवाद, यह बहुत उपयोगी है! लेकिन यह होना चाहिए: अगर (is_single () && is_post_type ('post_type'))) // // काम जादू} समापन ब्रैकेट गायब था .... बहुत बधाई, Ethel

क्या इसने किसी और के लिए काम करना बंद कर दिया है? मैंने इसे उम्र के लिए इस्तेमाल किया है, लेकिन अचानक इसने मेरे लिए काम करना बंद कर दिया। हालांकि, वैश्विक $ wp_query के बिना एक ही विधि का उपयोग करना हमेशा काम करता है:if ( 'post-type' == get_post_type() ) {}
turtledropbomb

is_post_type () मूल्यह्रास है।
लीसा सेरिली

23

यदि कोई पोस्ट किसी कस्टम पोस्ट प्रकार की है, तो परीक्षण करने के लिए, सभी अंतर्निहित पोस्ट प्रकारों की सूची प्राप्त करें और परीक्षण करें कि क्या पोस्ट का प्रकार उस सूची में है।

एक समारोह के रूप में:

/**
 * Check if a post is a custom post type.
 * @param  mixed $post Post object or ID
 * @return boolean
 */
function is_custom_post_type( $post = NULL )
{
    $all_custom_post_types = get_post_types( array ( '_builtin' => FALSE ) );

    // there are no custom post types
    if ( empty ( $all_custom_post_types ) )
        return FALSE;

    $custom_types      = array_keys( $all_custom_post_types );
    $current_post_type = get_post_type( $post );

    // could not detect current type
    if ( ! $current_post_type )
        return FALSE;

    return in_array( $current_post_type, $custom_types );
}

उपयोग:

if ( is_custom_post_type() )
    print 'This is a custom post type!';

यह स्वीकृत उत्तर होना चाहिए।
आलाप

10

यदि किसी कारण से आपके पास पहले से ही वैश्विक चर $ पोस्ट तक पहुंच है, तो आप बस उपयोग कर सकते हैं

if ($post->post_type == "your desired post type") {
}

5

यदि आप अपने सभी कस्टम पोस्ट प्रकारों के लिए वाइल्ड कार्ड जांच चाहते हैं:

if( ! is_singular( array('page', 'attachment', 'post') ) ){
    // echo 'Imma custom post type!';
}

इस तरह आपको अपने कस्टम पोस्ट का नाम जानने की आवश्यकता नहीं है। यदि आप अपने कस्टम पोस्ट का नाम बाद में बदलते हैं तो भी कोड काम करता है।

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