Pregunta

Estoy buscando una manera de probar si un mensaje es un tipo de mensaje personalizado. Por ejemplo, en, por ejemplo, la barra lateral que puede poner en código como el siguiente:

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

Quiero código de prueba por sólo un tipo de mensaje personalizado.

¿Fue útil?

Solución

Aquí está: get_post_type() y luego if ( 'book' == get_post_type() ) ... según condicionales> Un Tipo Envío en el Codex.

Otros consejos

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

Lo anterior es true cuando se visualiza un mensaje del tipo de envío personalizado:. book

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

Lo anterior es true cuando se visualiza un mensaje de los tipos de envíos personalizados:. newspaper o book

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

Agregue esto a su functions.php, y se 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;
}

Así que ahora puede usar la siguiente:

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

Para probar si un mensaje es en cualquier tipo personalizado posterior, ir a buscar la lista de todos no incorporado de los tipos de correos y prueba si el tipo del mensaje está en esa lista.

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

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

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

Si desea un cheque comodín para todos sus tipos de envíos personalizados:

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

De esta manera no es necesario conocer el nombre de su mensaje personalizado. También el código todavía funciona incluso si cambia el nombre de su mensaje personalizado más tarde.

Licenciado bajo: CC-BY-SA con atribución
scroll top