Почему я получаю заголовок страницы вместо перебора заголовков всех постов?

Как исправить код, чтобы вместо заголовка страницы выводились заголовки всех постов?

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
	<h2><?php the_title(); ?></h2>
<?php endwhile; else: ?>
	<h2><?php the_title(); ?></h2>
<?php endif; ?>
  • 13 сентября 2023 г. 21:46
Ответы на вопрос 2
Вы получаете только заголовок страницы, потому что вы используете функцию `the_title()` внутри цикла `while`, которая выводит заголовок текущей записи. Текущая запись в этом случае - это страница, на которой вы находитесь.

Для того чтобы вывести заголовки всех постов, вам нужно использовать функцию `WP_Query` для получения всех постов и затем перебрать их в цикле:

```php
<?php
$query = new WP_Query( array( 'post_type' => 'post' ) );

if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
	<h2><?php the_title(); ?></h2>
<?php endwhile; else: ?>
	<p>Нет постов.</p>
<?php endif;
wp_reset_postdata(); ?>
```

В этом коде мы выполняем запрос к базе данных с помощью `WP_Query` и получаем все посты типа "post". Затем мы выводим заголовок каждого поста с помощью `the_title()` внутри цикла `while`. Обратите внимание на использование функции `wp_reset_postdata()`, которая сбрасывает глобальную переменную `$post` после окончания цикла, чтобы не вызывать проблемы в других частях кода.
the_title() - это функция, которая извлекает заголовок текущей страницы. Если вам нужно получить заголовок определенной страницы, вам следует использовать функцию get_the_title() и указать идентификатор этой страницы в качестве аргумента. Например, чтобы получить заголовок страницы с определенным идентификатором $id, вы можете использовать следующий код: get_the_title($id). Попробуйте вставить нужный идентификатор в этот метод и получите нужный результат.
Похожие вопросы