Вывод текущего пользовательского типа записи

31 янв. 2011 г., 00:18:10
Просмотры: 50.1K
Голосов: 4

У меня есть список всех пользовательских типов записей в формате блога. Я пытаюсь вывести название типа записи для каждого поста.

Я попробовал это:

get_post_type_object('post');
echo $obj->labels->singular_name;

Но это просто отображает "Post" для всех записей вместо названия пользовательского типа записи

0
Все ответы на вопрос 3
0
20

Если вы находитесь внутри цикла (The Loop), попробуйте:

$post_type = get_post_type( $post->ID );
echo $post_type;

Этот код работает в вашем случае?

31 янв. 2011 г. 00:44:44
1

Внутри цикла у вас уже есть объект $post, поэтому вам не нужно вызывать get_post_type или другие функции, это должно сработать:

<?php echo $post->post_type; ?>

Или, если вам нравится идея использования get_post_type, вы можете упростить задачу функции, передав ей уже имеющийся объект записи (чтобы ей не пришлось заново получать запись, а просто извлечь одно свойство из неё).

<?php echo get_post_type( $post ); ?>

В противном случае, get_post_type будет без необходимости вызывать get_post для получения объекта записи (объекта, который у вас уже есть).

Надеюсь, это поможет..

1 февр. 2011 г. 14:04:54
Комментарии

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

jerclarke jerclarke
21 сент. 2012 г. 22:20:25
1

Читая документацию на http://codex.wordpress.org/Function_Reference/get_post_type_object вы должны передать тип записи в качестве аргумента!

Попробуйте следующее:

$obj=get_post_type_object('your-post-type');
echo $obj->labels->singular_name;
31 янв. 2011 г. 00:49:40
Комментарии

отсутствует установка переменной $obj =

Leo Caseiro Leo Caseiro
21 июн. 2016 г. 16:14:00