Возвращает все данные поста из базы данных, содержащиеся в таблице 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 );