Bagaimana cara menguji apakah suatu posting adalah jenis posting khusus?


103

Saya mencari cara untuk menguji apakah posting adalah jenis posting khusus. Misalnya, di, katakanlah, bilah sisi saya dapat memasukkan kode seperti ini:

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

Saya ingin pengujian kode hanya untuk jenis posting khusus.

Jawaban:



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

Di atas adalah truesaat melihat posting dari jenis posting kustom: book.

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

Di atas adalah trueketika melihat posting dari jenis posting khusus: newspaperatau book.

Tag ini dan lebih banyak kondisional dapat dilihat di sini .


27

Tambahkan ini ke Anda functions.php, dan Anda dapat memiliki fungsionalitas, di dalam atau di luar loop:

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

Jadi sekarang Anda dapat menggunakan yang berikut ini:

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

Terima kasih, ini sangat berguna! Tetapi seharusnya: if (is_single () && is_post_type ('post_type')) {// work magic} Braket penutup tidak ada .... Banyak salam, Ethel

Apakah ini berhenti bekerja untuk orang lain? Saya sudah menggunakan ini sejak lama, tetapi tiba-tiba ini berhenti bekerja untuk saya. Namun, menggunakan metode yang sama tanpa global $ wp_query selalu berfungsi:if ( 'post-type' == get_post_type() ) {}
turtledropbomb

is_post_type () disusutkan.
Lisa Cerilli

23

Untuk menguji apakah posting adalah setiap jenis posting kustom, mengambil daftar semua tidak built-in jenis pos dan uji apakah jenis posting adalah dalam daftar itu.

Sebagai fungsi:

/**
 * 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 );
}

Pemakaian:

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

Ini harus menjadi jawaban yang diterima.
aalaap

10

Jika karena alasan apa pun Anda sudah memiliki akses ke $ variabel global, Anda dapat menggunakannya

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

5

Jika Anda ingin kartu liar, periksa semua jenis pos kustom Anda:

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

Dengan cara ini Anda tidak perlu tahu nama pos kustom Anda. Juga kode masih berfungsi bahkan jika Anda mengubah nama posting kustom Anda nanti.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.