Mostrar el tipo de entrada personalizada actual
Tengo una lista de todos mis tipos de entradas personalizadas juntos en formato blog. Lo que estoy tratando de hacer es mostrar el nombre del tipo de entrada en cada publicación.
Intenté esto:
get_post_type_object('post');
echo $obj->labels->singular_name;
Pero solo mostró "Post" para todo en lugar del nombre del tipo de entrada personalizada

Dentro del loop ya tienes disponible un objeto $post
, no necesitas llamar a get_post_type
ni a otras funciones, esto debería funcionar:
<?php echo $post->post_type; ?>
O si prefieres la idea de llamar a get_post_type
, puedes facilitar el trabajo a la función pasándole el objeto post que ya tienes (así no tendrá que recuperar el post, solo extraer una propiedad de él).
<?php echo get_post_type( $post ); ?>
De lo contrario, get_post_type
llamará innecesariamente a get_post
para obtener el objeto post (un objeto que ya tienes disponible de todas formas).
Espero que esto ayude...

Una vez que se obtiene un post de la base de datos llamando a get_post() de nuevo no es un problema grave. Todo está almacenado en caché internamente durante la duración de la vista de página, el único sobrecosto es una llamada rápida a función para recuperar el objeto de la caché. En este caso get_post_type() realmente hace prácticamente nada más que devolver $post->post_type, por lo que tu optimización tiene sentido, pero probablemente debería tener un filtro o algo similar, en cuyo caso usar get_post_type() sería la forma API de proceder.

Al leer la documentación en http://codex.wordpress.org/Function_Reference/get_post_type_object debes pasarle como argumento el tipo de post personalizado (custom post type).
Prueba con:
$obj = get_post_type_object('tu-tipo-de-post'); // Obtiene el objeto del tipo de post
echo $obj->labels->singular_name; // Muestra el nombre singular del tipo de post
