কোনও পোস্ট যদি কাস্টম পোস্ট টাইপ হয় তবে কীভাবে পরীক্ষা করবেন?


103

আমি কোনও পোস্টটি যদি কাস্টম পোস্টের ধরণের হয় তা পরীক্ষা করার একটি উপায় খুঁজছি। উদাহরণস্বরূপ, মধ্যে, বলুন, আমি যে সাইডবারটি কোডটি এইরকম রাখতে পারি:

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

আমি কেবল একটি কাস্টম পোস্ট ধরণের জন্য কোড টেস্টিং চাই।

উত্তর:


133

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')) {// কাজের যাদু} বন্ধ বন্ধনীটি অনুপস্থিত ছিল .... অনেক শুভেচ্ছা, এথেল

এটি কি অন্য কারও জন্য কাজ করা বন্ধ করে দিয়েছে? আমি এটি যুগে যুগে ব্যবহার করেছি, তবে হঠাৎ এটি আমার পক্ষে কাজ করা বন্ধ করে দিয়েছে। তবে, বিশ্বব্যাপী p wp_query ব্যতীত একই পদ্ধতি ব্যবহার করা সর্বদা কাজ করে:if ( 'post-type' == get_post_type() ) {}
টার্টলড্রোম্বম্ব

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!';
}

এইভাবে আপনার কাস্টম পোস্টের নাম জানার দরকার নেই। আপনি পরে নিজের কাস্টম পোস্টের নাম পরিবর্তন করেও কোডটি এখনও কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.