Si es un tipo de publicación personalizada

89

Estoy buscando una forma de probar si una publicación es un tipo de publicación personalizada. Por ejemplo, en la barra lateral puedo poner código como este:

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

Quiero pruebas de código solo para un tipo de publicación personalizada. Cualquier ayuda sería muy apreciada!

    
pregunta Adam Thompson 11.01.2011 - 17:54

6 respuestas

115

Aquí está: get_post_type() y luego if ( 'book' == get_post_type() ) ... según Etiquetas condicionales > Un tipo de publicación en Codex.

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

Lo anterior es true al ver una publicación del tipo de publicación personalizada: book .

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

Lo anterior es true al ver una publicación de los tipos de publicación personalizada: newspaper o book .

Estas y más etiquetas condicionales se pueden ver aquí .

    
respondido por el Mark Rummel 12.06.2012 - 18:41
24

Para cualquier otra persona que busque esto, agréguelo a su functions.php y puede tener la funcionalidad, dentro o fuera del bucle:

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

para que ahora puedas usar lo siguiente:

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

Para probar si una publicación es cualquier tipo de publicación personalizada, busque la lista de todos los tipos de publicación no integrados y compruebe si el tipo de publicación está en esa lista.

Como una función:

/**
 * 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!';
    
respondido por el fuxia 15.04.2013 - 17:22
8

Si por alguna razón ya tiene acceso a la variable global $ post, simplemente puede usar

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

Si desea una verificación de comodín para todos sus tipos de publicaciones personalizadas:

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

De esta manera, no necesita saber el nombre de su publicación personalizada. Además, el código aún funciona incluso si cambias el nombre de tu publicación personalizada más adelante.

    
respondido por el kosinix 30.01.2014 - 04:52

Lea otras preguntas en las etiquetas