На сайте функция the_title() возвращает заголовок страницы, хотя насколько мне известно должна возвращать заголовок первого поста. Что я упустил?
Ссылка скопирована
Код выводит заголовок страницы вместо заголовка поста. Что я упустил или делаю не так?
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <p><?php the_title( ''); ?></p> <?php endwhile; else: ?> Нет записей <?php endif; ?> |
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <p><?php the_title( ''); ?></p> <?php endwhile; else: ?> Нет записей <?php endif; ?>
Дополнительно:
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
0 ответов
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
0 ответов
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
0 ответов
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
0 ответов

Вы ничего не упустили в синтаксисе цикла, но неверно понимаете, что именно находится в текущем запросе. Функция
the_title()выводит заголовок текущего объекта в Loop. Если вы находитесь на обычной странице, текущий объект — это страница. Поэтому и выводится заголовок страницы.Чтобы получить заголовок первого поста, нужно сделать запрос к постам:
$query = new WP_Query([ 'post_type' => 'post', 'posts_per_page' => 1, 'post_status' => 'publish', ]); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); echo '<p>' . esc_html(get_the_title()) . '</p>'; } wp_reset_postdata(); } else { echo 'Нет записей'; }
Если нужно вывести несколько последних постов, увеличьте
posts_per_page. Если нужен первый пост по дате публикации от старого к новому, задайте сортировку:'orderby' => 'date', 'order' => 'ASC',
Важно:
have_posts()без новогоWP_Queryвсегда работает с глобальным запросом WordPress. На странице это не блог. На архиве это архив. На single это одна запись. Поэтому для блоков «последние новости», «похожие записи», «все посты» почти всегда создают отдельный запрос.Также не надо передавать пустую строку в
the_title('')без необходимости. Если хотите получить заголовок как строку, используйтеget_the_title(), а если выводите на экран —the_title()илиecho esc_html(get_the_title()).