the_post()
Устанавливает следующий пост в глобальную переменную global $post. Также устанавливает все данные поста с помощью setup_postdata().
В глобальную переменную global $post будет установлен следующий пост из цикла, см WP_Query::next_post(). Если цикл только начался, то туда будет установлен первый пост из цикла.
Далее, на базе установленной глобальной переменной $post, будет установлены все важные данные поста - см. setup_postdata( $post ).
Также, включает свойство WP_Query::in_the_loop = true. Это говорим о том, что цикл запущен - это нужно, чтобы функция in_the_loop() работала правильно.
Эту функцию обязательно нужно использовать в связке с функцией have_posts(), которая проверяет можно ли вообще вызывать эту функцию.
while ( have_posts() ) {
the_post();
the_title();
}Эта функци работает только с глобальным объектом global $wp_query. Поэтому, если вы делаете кастомный запрос, то вам нужно вызвать метод рабочего объекта с таким же названием, вместо этой функции:
$query = new WP_Query( $args );
while ( $query->have_posts() ) {
$query->the_post();
the_title();
}
wp_reset_postdata(); // ВАЖНО вернуть global $post обратноЭто обёртка для метода WP_Query::the_post().
Хуков нет.
Возвращает
null. Ничего не возвращает.
Использование
while ( have_posts() ) {
the_post();
// ...
}
Примеры
#1 The available functions to access the post within the loop are:
| next_post_link() | Выводит ссылку на следующий по дате пост из указанной таксономии (по умолчанию category). |
| previous_post_link() | Выводит ссылку на предыдущий по дате пост (запись) из указанной таксономии (по умолчанию category). |
| the_category() | Выводит ссылки на рубрики, к которым принадлежит пост в виде HTML li списка или в произвольном формате. |
| the_author() | Выводит имя автора поста. |
| the_content() | Выводит контент текущего поста (записи). |
| the_excerpt() | Выводит "отрывок" (цитату) поста или первые 55 слов контента, со вставкой в конец [...]. |
| the_ID() | Выводит ID текущего поста. Используется внутри Цикла WordPress. |
| the_meta() | Выводит произвольные поля записи (метаданные из wp_postmeta). Поля выводятся в списке <li>. Скрытые поля игнорируются. |
| the_shortlink() | Выводит короткую ссылку текущей записи, например: /?p=1234. |
| the_tags() | Выводит ссылки на метки, которые относятся к посту. |
| the_title() | Выводит на экран заголовок записи. Принято использовать внутри цикла. |
| the_time() | Выводит на экран время (дату) публикации текущей записи в Цикле WordPress. |
Including the following conditional tags:
| is_home() | Проверяет показывается ли страница с постами, обычно это главная страница сайта. Условный тэг. |
| is_admin() | Проверяет находится ли пользователь в админ-панели сайта (консоль или любая другая страница админки). Условный тег. |
| is_single() | Проверяет находимся ли мы на странице поста (записи любого типа). Записи с типом attachment и page не проверяются. Условный тег. |
| is_page() | Проверяет отображается ли страница "постоянной страницы". Можно указать ID, ярлык или заголовок страницы для проверки. Условный тег. |
| is_page_template() | Проверяет используется ли файл шаблона для отображения текущей страницы. Можно указать название файла. |
| is_category() | Проверяет показывается ли страница категории или нет. Условный тэг. |
| is_tag() | Проверят отображается ли страница архива по меткам. Условный тег. |
| is_author() | Проверяет отображается ли страница с постами автора. Можно указать конкретного автора. Условный тег. |
| is_search() | Срабатывает, когда отображается страница результатов поиска. Условный тег. |
| is_404() | Проверяет показывается ли страница ошибки 404 (HTTP 404: страница не найдена). Условный тег. |
| has_excerpt() | Проверяет есть ли у текущего поста отрывок (цитата, короткое описание). Условный тег. |
#2 Использование не в цикле
На отдельных страницах типа is_single() не обязательно использовать цикл if( have_posts() ){ while ( have_posts() ){ the_post(); ... . На таких страницах переменная $post отвечает за один пост, поэтому часть цикла можно отбросить:
<?php the_post(); have_posts(); ?> <h1><?php the_title() ?></h1> <?php the_content(); ?>
#3 Использование функции в цикле WordPress:
while( have_posts() ){
the_post();
echo '<h2>';
the_title();
echo '</h2>';
the_content();
}
Заметки
- Global. WP_Query.
$wp_queryWordPress Query object.
Список изменений
| С версии 1.5.0 | Введена. |
Код the_post() the post WP 7.0
function the_post() {
global $wp_query;
if ( ! isset( $wp_query ) ) {
return;
}
$wp_query->the_post();
}