get_post()WP 1.5.1

Получает данные указанной или текущей записи (поста). Возвращает объект WP_Post.

Указывать нужно ID записи, иначе функция вернет текущую запись.

Запись берется по ID, поэтому тип записи может быть любой: вложение, пост, страница, произвольный тип. Если запись не указана, функция получит текущую запись из цикла (соответствующую глобальной переменной $post).

Не путайте с функцией get_posts(), которая получает данные нескольких записей.

ВАЖНО! get_post() без параметров возвращает глобальный объект $post! Проверено на версии WP 6.0.

Например:

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

echo $post->post_type; // post

$some_post = get_post();
$some_post->post_type = 'my_post_type';

echo $post->post_type; // my_post_type

Другой пример. Допустим у нас уже определана глобальная переменная $post. Теперь, давайте запустим такой код:

$mypost = get_post();
$mypost->post_type = 'my_post_type';

global $post;
echo $post->post_type; // my_post_type

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

//  Верно: передаем переменную, а не число
$post_id = 7;
$the_post = get_post( $post_id );

//  Неверно (вызовет ошибку до версии WP 3.5): передаем число, а не переменную
$the_post = get_post( 7 );

Работает на основе: WP_Post::get_instance()
1 раз — 0.000879 сек (медленно) | 50000 раз — 0.25 сек (очень быстро) | PHP 7.2.5, WP 5.0.1

Хуков нет.

Возвращает

WP_Post|Массив|null.

  • WP_Post - когда удалось получить пост (запись) и $output = OBJECT.
  • array - когда удалось получить пост (запись) и $output = ARRAY_A или ARRAY_N.
  • null - при неудаче.

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

$post = get_post( $post, $output, $filter );
$post(число/WP_Post/null)
ID поста, данные которого нужно получить.
По умолчанию: null (global $post)
$output(строка)

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

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

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

$filter(строка)
Как фильтровать пост. Смотрите описание функции sanitize_post_field() для полного списка значений. Может быть: 'raw', 'edit', 'db', или 'display'.
По умолчанию: raw

Примеры

7

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

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(число)
Количество комментариев у записи.
0

#2 Получаем данные поста с идентификатором 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'];

Заметки

  • Global. WP_Post. $post Global post object.

Список изменений

С версии 1.5.1 Введена.

Код get_post() WP 6.7.1

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 ( ARRAY_A === $output ) {
		return $_post->to_array();
	} elseif ( ARRAY_N === $output ) {
		return array_values( $_post->to_array() );
	}

	return $_post;
}