Возвращает все данные поста из базы данных, содержащиеся в таблице wp_posts
. Работает прекрасно для любых типов постов.
Если в функцию не передавать первый параметр, то она будет получать информацию о текущем посте в цикле, а про циклы смотрите видеоурок.
get_post( $post = null, $output = OBJECT, $filter = 'raw' );
OBJECT
— в виде объекта,ARRAY_A
— ассоциативный массив,ARRAY_N
— нумерованный массив;raw
(по умолчанию), edit
, db
, или display
.Функция get_post()
в случае успеха возвращает объект класса WP_Post, в случае неуспеха, например, если пост не существует – false
.
Точнее сам WP_Post
– это класс, а мы поговорим именно про объект класса WP_Post
, $post = get_post()
.
Объект содержит следующие свойства.
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS
https://misha.agency/?p=8542
Давайте попробуем на примере:
$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 );
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Добрый день)
Скажите пожалуйста, я сделал через get_post функцию вывода последних новостей, все хорошо, но мне нужно вставить это в div'ы, получается, если я вставляю в разные дивы, оно выводит одни и те же функции, а поскольку я пытаюсь настроить сетку masonry, я не могу без дивов.
Скажите пожалуйста, как правильно мне выйти из этой ситуации, что бы и masonry корректно отображался и последние новости выводились без повторений?
Спасибо большое!!!
Добрый день! А можно на неё посмотреть?
Конечно.
Я подключил masonry, вставил функцию для вывода последних новостей:
Только теперь проблема в следующем, по функции у меня отображаются последние 3 поста, если я их вывожу в разных дивах, то они показывают 6 постов, из которых 3 повторяются, потому что выполняют одну и ту же функцию. А без дивов masonary не будет корректно отображаться. И в один див все впихнуть и сказать, что бы в функции отображались 10 постов не получится, потому что так оно выводит просто список.
Вот и вопрос, какую функцию можно вписать, что бы отображались последние данные без повторений?
Заранее спасибо!!!
#container по-любому нужно выносить из цикла.
Почему у вас это не получается? Как вы пробуете?
Все, я разобрался, спасибо!))
Только теперь я не могу разобраться в следующем: вот, хотелось бы сделать что-то похожее как на этом сайте http://www.the-village.ru/ , тут используется masonry или просто какие-то стили css.
Просто, если я в свой masonry пытаюсь что-то вписать, у меня все сбивается, вот я и подумал, может лучше использовать css. Или я не прав?
Спасибо!!!
Можете на этом месте подробнее?)
Я настроил masonry на главной странице, все отлично, у меня такой код:
Отображается на главной странице все нормально.
Захотел я добавить под каждой картинкой заголовок и цитату к статье, прописал следующий код:
и теперь картинки отображаются некорректно, очень маленькие.
Картинки сжались, а заголовки и цитаты разбросаны по всей странице.
Я даже не знаю, что можно сделать, в идеале хотелось бы что-то такое как в http://demo.lp-tricks.com/recent-posts/responsive-grid-dark/
Спасибо большое!