get_post

Получает пост по переданному ID и возвращает данные поста из базы данных. Вместо поста может быть любая другая запись (вложение, страница, произвольный тип).

✈ 1 раз = 0.000185с = быстро | 50000 раз = 0.19с = очень быстро PHP 7.1.0, WP 4.7

Хуков нет.

Возвращает

WP_Post/null. Объект WP_Post, если удалось получить запись и null, при неудаче.

Использование

get_post( $id, $output, $filter );
$id(число/массив/объект)
ID поста, данные которого нужно получить. По умолчанию будет получен текущий пост.
По умолчанию: null
$output(строка)

Флаг обозначающий в каком виде вернуть данные, может быть:

  • OBJECT – данные вернутся в виде объекта
  • ARRAY_A – данные вернутся в виде ассоциативного массива
  • ARRAY_N – данные вернутся в виде простого массива (без ключей)

По умолчанию: OBJECT

$filter(строка)
Как фильтровать пост. Смотрите описание функции sanitize_post_field() для полного списка значений.
По умолчанию: raw

Примеры

Получаем данные поста с идентификатором 7 и получаем заголовок записи:

$post_id_7 = get_post( 7 );
$title = $post_id_7->post_title;

Получаем данные поста 7 в виде ассоциативного массива и “вытаскиваем” заголовок из массива:

$post_id_7 = get_post( 7, ARRAY_A);
$title = $post_id_7['post_title'];

Возвращаемые данные

ID(число)
Идентификатор записи.
post_author(число)
Идентификатор автора записи.
post_date(строка)
Дата записи в формате YYYY-MM-DD HH:MM:SS (с учетом исправления времени).
post_date_gmt(строка)
Дата записи в формате YYYY-MM-DD HH:MM:SS (время по Гринвичу (GMT)).
post_content(строка)
Текст записи.
post_title(строка)
Заголовок записи.
post_excerpt(строка)
Цитата записи.
post_status(строка)
Статут записи, может быть: publish|pending|draft|private|static|object|attachment|inherit|future|trash.
comment_status(строка)
Возможность комментирования для записи, может быть: open|closed|registered_only.
ping_status(строка)
Статус пингов/трэкбэков, может быть: open|closed.
post_password(строка)
Пароль записи.
post_name(строка)
Имя записи (слаг). Название которое обычно используется в УРЛ-е.
to_ping(строка)
УРЛ-ы из статьи, на которые нужно отправить уведомления при обновлении поста.
pinged(строка)
УРЛ-ы из статьи, которые уже получили уведомления.
post_modified(строка)
Дата изменения записи в формате YYYY-MM-DD HH:MM:SS (с учетом корректировки времени).
post_modified_gmt(число/строка)
Дата изменения записи в формате YYYY-MM-DD HH:MM:SS (время по Гринвичу (GMT)).
post_parent(число)
ID родительской страницы (отлично от нуля у прикрепленных типов записей).
guid(строка)
Ссылка на запись. Важно: использовать этот параметр в качестве постоянной ссылки для поста неправильно, если версия вашего WordPress выше 2.5. Это уникальный идентификатор записи, который позднее стал ссылкой на запись.
menu_order(число)
Порядковый номер для построения меню (используется для постоянных страниц).
post_type(строка)
Тип записи (post|page|attachment).
post_mime_type(строка)
Миме тип записи (jpg|png|zip|pdf и т.д.). Используется для прикрепленных записей.
comment_count(число)
Количество комментариев у записи.

Заметки

До версии 3.5 первый параметр мог получать только переменную, прямая передача числа вызывала ошибку:

<?php
function get_post( $post = null, $output = OBJECT, $filter = 'raw' ) {
	if ( empty( $post ) && isset( $GLOBALS['post'] ) )
		$post = $GLOBALS['post'];

	if ( $post instanceof WP_Post ) {
		$_post = $post;
	} elseif ( is_object( $post ) ) {
		if ( empty( $post->filter ) ) {
			$_post = sanitize_post( $post, 'raw' );
			$_post = new WP_Post( $_post );
		} elseif ( 'raw' == $post->filter ) {
			$_post = new WP_Post( $post );
		} else {
			$_post = WP_Post::get_instance( $post->ID );
		}
	} else {
		$_post = WP_Post::get_instance( $post );
	}

	if ( ! $_post )
		return null;

	$_post = $_post->filter( $filter );

	if ( $output == ARRAY_A )
		return $_post->to_array();
	elseif ( $output == ARRAY_N )
		return array_values( $_post->to_array() );

	return $_post;
}