Jak sprawdzić, czy post jest niestandardowym typem postu?


Odpowiedzi:



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

Powyższe jest truepodczas oglądania stanowisko niestandardowego typu postu: book.

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

Powyższe dotyczy trueprzeglądania postu niestandardowych typów postów: newspaperlub book.

Te i więcej tagów warunkowych można obejrzeć tutaj .


27

Dodaj to do swojego functions.php, a możesz mieć funkcjonalność wewnątrz lub na zewnątrz pętli:

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

Możesz teraz użyć następujących opcji:

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

Dziękuję, to jest bardzo przydatne! Ale powinno być: if (is_single () && is_post_type ('post_type')) {// magia pracy} Brakowało nawiasu zamykającego .... Wiele pozdrowień, Ethel

Czy to przestało działać dla kogoś innego? Używałem tego od wieków, ale nagle przestało to dla mnie działać. Jednak użycie tej samej metody bez globalnego $ wp_query zawsze działa:if ( 'post-type' == get_post_type() ) {}
turtledropbomb

is_post_type () jest amortyzowany.
Lisa Cerilli,

23

Aby sprawdzić, czy post jest dowolny niestandardowy typ poczta, pobrać listę wszystkich Niewbudowane typów pocztowych i testu jeśli typ słupka jest w tym wykazie.

Jako funkcja:

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

Stosowanie:

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

To powinna być zaakceptowana odpowiedź.
aalaap

10

Jeśli z jakiegoś powodu masz już dostęp do zmiennej globalnej $ post, możesz po prostu użyć

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

5

Jeśli chcesz sprawdzić symbol wieloznaczny dla wszystkich niestandardowych typów postów:

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

W ten sposób nie musisz znać nazwy swojego niestandardowego postu. Kod nadal działa, nawet jeśli później zmienisz nazwę swojego niestandardowego posta.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.