Вывод записей на страницу

Примеры цикла, где используется have_posts(), получают данные для перебора из глобальной переменной $wp_query в которую WP автоматически добавляет данные в соответствии с тем, на какой странице мы сейчас находимся, например, на главной странице или странице рубрик, данные будут разные.

<!-- Проверка наличия записей в цикле -->
<?php if(have_posts()){ ?>
	<!-- Начало цикла -->
	<?php while(have_posts()){ the_post(); ?>
		<!-- Цикл WordPress -->
		<!-- Здесь уже определилась переменная $post, -->
		<!-- на основе которой будет строится дальнейший код. -->
		<!-- $post будет меняться для каждого поста while( have_posts() ). -->
		<!-- $post нужна, чтобы работали теги шаблона: in_category('3'), the_permalink() и т.д. -->
		<!-- Проверка находится ли этот пост в категории 3. -->
		<!-- Если да, то задаем CSS класс div-у class="post-cat-three". -->
		<!-- Если нет, то класс будет post class="post". -->
		<?php if(in_category('3')){ ?>
			<div class="post-cat-three">
		<?php }else{ ?>
			<div class="post">
		<?php } ?>
		<!-- Выводим заголовок поста, как ссылку на сам пост. -->
		<h2><a href="<?php the_permalink() ?>" title="Ссылка на: <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
		<!-- Выводим дату поста и ссылку на другие записи автора. -->
		<small><?php the_time('F jS, Y') ?> Автор: <?php the_author_posts_link() ?></small>
		<!-- Выводим текст поста в теге div. -->
		<div class="entry">
			<?php the_content(); ?>
		</div>
		<!-- Выводим категории поста, через запятую. -->
		<p class="postmetadata">Расположено в <?php the_category(', '); ?></p>
		</div> <!-- закрываем основной тег div -->
		<!-- Отсюда цикл начинает повторятся, если есть еще посты -->
		<!-- Останавливаем цикл (endwhile), -->
	<?php } ?>
	<!-- Полное окончание цикла. -->
	<!-- Если записей в цикле нет — цикл не сработал (else) -->
<?php }else{ ?>
	<p>Нет постов в цикле.</p>
<?php } ?>

the_permalink() — Ссылка на статью

the_title() — Наименование статьи

the_title_attribute() — Наименование для атрибутов

the_time(‘d.m.Y H:i‘) — Вывод времени в формате PHP

the_author_posts_link() — Автор поста

the_content() — Содержимое

in_category(‘3‘) — Проверка на существование в категории

Цикл с использованием get_posts():

<?php
global $post;
$myposts = get_posts( 'numberposts=5&offset=1&category=1' );
foreach( $myposts as $post ){
	setup_postdata( $post );
	?>
	<!--
	здесь формирование вывода постов,
	где работают теги шаблона относящиеся к the loop, например, the_title()
	-->
<?php
}
wp_reset_postdata();
?>

Цикл с использованием wp_query():

<?php
// задаем нужные нам критерии выборки данных из БД
$query = new WP_Query([
	'posts_per_page' => 5,
	'orderby' => 'comment_count'
]);
// Цикл
global $post;
if($query->have_posts()){
	while($query->have_posts()){
		$query->the_post();
		the_title();
	}
}else{
	// Постов не найдено
}
wp_reset_postdata(); // Сбрасываем $post. Возвращаем оригинальные данные
?>