Se for um tipo de postagem personalizado

89

Estou procurando uma maneira de testar se uma postagem é um tipo de postagem personalizado. Por exemplo, digamos na barra lateral eu posso colocar código assim:

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

Eu quero testar o código apenas para um tipo de postagem personalizado. Qualquer ajuda seria muito apreciada!

    
por Adam Thompson 11.01.2011 / 17:54
fonte

6 respostas

115

Aqui você está: get_post_type() e, em seguida, if ( 'book' == get_post_type() ) ... conforme Tags adicionais > Um tipo de postagem no Codex.

    
por Szymon Skulimowski 11.01.2011 / 18:12
fonte
147
if ( is_singular( 'book' ) ) {
    // conditional content/code
}

O texto acima é true ao exibir uma postagem do tipo de postagem personalizada: book .

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

O texto acima é true ao exibir uma postagem dos tipos de postagem personalizados: newspaper ou book .

Estas e mais tags condicionais podem ser vistas aqui .

    
por Mark Rummel 12.06.2012 / 18:41
fonte
24

Para qualquer um que esteja procurando por isso, adicione isso ao seu functions.php e você poderá ter a funcionalidade, dentro ou fora do loop:

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

para que você possa usar o seguinte:

if (is_single() && is_post_type('post_type')){
  //work magic
}
    
por Mild Fuzz 06.07.2011 / 15:41
fonte
21

Para testar se uma postagem é qualquer tipo de postagem personalizada, busque a lista de todos os tipos de post não embutidos e teste se o tipo da postagem está nessa lista.

Como uma função:

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

Uso:

if ( is_custom_post_type() )
    print 'This is a custom post type!';
    
por fuxia 15.04.2013 / 17:22
fonte
8

Se por algum motivo você já tiver acesso à variável global $ post, você pode simplesmente usar

if ($post->post_type == "your desired post type") {
}
    
por ino 01.02.2013 / 22:30
fonte
3

Se você quiser uma verificação de curinga para todos os seus tipos de postagem personalizados:

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

Dessa forma, você não precisa saber o nome de sua postagem personalizada. Além disso, o código ainda funciona mesmo se você alterar o nome da postagem personalizada posteriormente.

    
por kosinix 30.01.2014 / 04:52
fonte