get_post() — возвращает всю информацию о конкретной записи

Возвращает все данные поста из базы данных, содержащиеся в таблице wp_posts. Работает прекрасно для любых типов постов.

Если в функцию не передавать первый параметр, то она будет получать информацию о текущем посте в цикле, а про циклы смотрите видеоурок.

get_post( $post = null, $output = OBJECT, $filter = 'raw' );

Параметры

$post целое|WP_Post
ID конкретного поста или его объект, по умолчанию — текущий пост в цикле.
$output строка
Формат получаемых данных:
  • OBJECT — в виде объекта,
  • ARRAY_A — ассоциативный массив,
  • ARRAY_N — нумерованный массив;
Подробнее про этот параметр в примере.
$filter строка
Формат очистки возвращаемых данных, может принимать значения raw (по умолчанию), edit, db, или display.

Функция get_post() в случае успеха возвращает объект класса WP_Post, в случае неуспеха, например, если пост не существует – false.

WP_Post – объект поста

Точнее сам WP_Post – это класс, а мы поговорим именно про объект класса WP_Post, $post = get_post().

Объект содержит следующие свойства.

ID
(целое число) ID поста
post_author
(целое число) ID автора поста
post_date
(строка) дата и время публикации поста в формате YYYY-MM-DD HH:MM:SS
post_date_gmt
(строка) дата и время (GMT) публикации поста в формате YYYY-MM-DD HH:MM:SS
post_content
(строка) контент (содержимое) поста
post_title
(строка) заголовок
post_excerpt
(строка) содержимое поля «Цитата»
post_status
(строка) статус поста
comment_status
(строка) настройки комментирования
ping_status
(строка) разрешены ли трэкбэки и пингбэки
post_password
(строка) пароль к посту
post_name
(строка) ярлык поста
to_ping
(строка) URL для пинга
pinged
(строка) URL, которые уже пингнуты
post_modified
(строка) дата и время последнего обновления(редактирования) поста в формате YYYY-MM-DD HH:MM:SS
post_modified_gmt
(строка) дата и время GMT последнего обновления(редактирования) поста в формате YYYY-MM-DD HH:MM:SS
post_content_filtered
(строка)
post_parent
(целое число) ID родительского поста (например для вложений или страниц)
guid
(строка) ссылка на пост вида https://misha.agency/?p=8542
menu_order
(целое число)
post_type
(строка) тип поста
post_mime_type
(строка) MIME тип (для вложений)
comment_count
(целое число) количество комментариев к посту

Давайте попробуем на примере:

$post = get_post( 1 );
print_r( $post );

Результат будет примерно таким:

WP_Post Object
(
    [ID] => 1
    [post_author] => 1
    [post_date] => 2012-12-09 05:55:07
    [post_date_gmt] => 2012-12-09 01:55:07
    [post_content] => 
Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите ее, затем начинайте создавать!
 
    [post_title] => Привет, мир!
    [post_excerpt] => 
    [post_status] => publish
    [comment_status] => open
    [ping_status] => open
    [post_password] => 
    [post_name] => privet-mir
    [to_ping] => 
    [pinged] => 
    [post_modified] => 2012-12-09 05:55:07
    [post_modified_gmt] => 2012-12-09 01:55:07
    [post_content_filtered] => 
    [post_parent] => 0
    [guid] => https://misha.agency/?p=1
    [menu_order] => 0
    [post_type] => post
    [post_mime_type] => 
    [comment_count] => 1
    [filter] => raw
)

Или:

echo $post->ID; // 1
echo $post->post_author; // 1
echo $post->post_date; // 2012-12-09 05:55:07
echo $post->post_date_gmt; // 2012-12-09 01:55:07
echo $post->post_content; // Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите ее, затем начинайте создавать!
echo $post->post_title; // Привет, мир!
echo $post->post_excerpt;
echo $post->post_status; // publish
echo $post->comment_status; // open
echo $post->ping_status; // open
echo $post->post_password;
echo $post->post_name; // privet-mir
echo $post->to_ping;
echo $post->pinged;
echo $post->post_modified; // 2012-12-09 05:55:07
echo $post->post_modified_gmt; // 2012-12-09 01:55:07
echo $post->post_content_filtered;
echo $post->post_parent;  // 0
echo $post->guid; // https://misha.agency/?p=1
echo $post->menu_order; // 0
echo $post->post_type; // post
echo $post->post_mime_type; 
echo $post->comment_count; // 1
echo $post->filter; // raw

Примеры

Предлагаю разобраться с форматом вывода. Итак, зная ID поста, выведем например его статус и заголовок. Пример, когда возвращается объект:

$my_post = get_post( 5 );
echo $my_post->post_status;
echo $my_post->post_title;

Ассоциативный массив:

$my_post = get_post( 5, ARRAY_A );
echo $my_post[ 'post_status' ];
echo $my_post[ 'post_title' ];

В случае с нумерованным массивом нужно заранее знать индексы соответствующих значений. Их можно выяснить например при помощи php-функции print_r().

$my_post = get_post( 5, ARRAY_N );
echo $my_post[7];
echo $my_post[11];

Важно: указывать ID поста в виде целого числа стало возможно только после версии WordPress 3.5. До этого ID поста нужно было передавать только в переменной, то есть:

$post = 5;
$my_post = get_post( $post );

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 7

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал