Вывод текущего пользовательского типа записи
У меня есть список всех пользовательских типов записей в формате блога. Я пытаюсь вывести название типа записи для каждого поста.
Я попробовал это:
get_post_type_object('post');
echo $obj->labels->singular_name;
Но это просто отображает "Post" для всех записей вместо названия пользовательского типа записи

Внутри цикла у вас уже есть объект $post
, поэтому вам не нужно вызывать get_post_type
или другие функции, это должно сработать:
<?php echo $post->post_type; ?>
Или, если вам нравится идея использования get_post_type
, вы можете упростить задачу функции, передав ей уже имеющийся объект записи (чтобы ей не пришлось заново получать запись, а просто извлечь одно свойство из неё).
<?php echo get_post_type( $post ); ?>
В противном случае, get_post_type
будет без необходимости вызывать get_post
для получения объекта записи (объекта, который у вас уже есть).
Надеюсь, это поможет..

Как только запись получена из базы данных, повторный вызов get_post() не является серьезной проблемой. Все данные кэшируются на время обработки страницы, единственные накладные расходы — это быстрый вызов функции для получения объекта из кеша. В данном случае get_post_type() фактически просто возвращает $post->post_type, поэтому ваша оптимизация имеет смысл, но, вероятно, должен быть фильтр или что-то подобное, и в таком случае использование get_post_type() было бы правильным подходом с точки зрения API.

Читая документацию на http://codex.wordpress.org/Function_Reference/get_post_type_object вы должны передать тип записи в качестве аргумента!
Попробуйте следующее:
$obj=get_post_type_object('your-post-type');
echo $obj->labels->singular_name;
