Почему не отображается the_content на статической главной странице WordPress
Должно быть, я делаю что-то не так.
Я настроил свой сайт со статической главной страницей, используя front-page.php. В админке я создал страницу с заголовком и выбрал front-page.php в выпадающем списке шаблонов.
Мой заголовок отображается нормально, однако the_content(); нет.
Я не делаю ничего особенного, как показано ниже.
<?php
/*
Шаблон: Главная страница
*/ ?>
<?php get_header(); ?>
<div class="content">
<div class="welcome_area">
<div class="welcome_area_title"><?php the_title('');?></div>
<div class="welcome_area_text">
<?php the_content(); ?>
</div>
Есть идеи, почему контент не отображается?

У вас на самом деле нет цикла (Loop).
<?php get_header(); ?>
<div class="content">
<div class="welcome_area">
<div class="welcome_area_title"><?php the_title('');?></div>
<div class="welcome_area_text"><?php
if (have_posts()) {
while (have_posts()) {
the_post();
the_content();
}
} ?>
Что происходит:
- Вы используете
have_posts()
для проверки наличия контента записи. При необходимости можно добавить блокelse
для вывода контента по умолчанию. - Вы проходите по контенту в цикле с помощью
while(have_posts())
- Вы вызываете
the_post()
для настройки переменной$post
и инкремента счетчика цикла. Если не вызыватьthe_post()
, получите бесконечный цикл. Это самая важная часть, которой не хватало в вашем коде. - После выполнения
the_post()
, теги шаблона записи должны работать как ожидается.
Я не сильно изменил ваш код, но я бы также перенес the_title
внутрь цикла, даже если кажется, что он работает. На самом деле он должен быть внутри цикла, так как вне цикла он не всегда работает корректно.
Ссылки
https://codex.wordpress.org/Class_Reference/WP_Query#Methods

Какая глупая ошибка. Не могу поверить, что я это упустил, день был долгим. Спасибо, что заметили.

Вам действительно не нужно использовать have_posts()
в front-page.php
; front-page.php
будет использоваться только если есть запись для отображения. Так что вы можете просто вставить the_post()
и убрать операторы if
и while
.

Прежде всего, если вы установили свою страницу как статическую главную страницу, вам не нужно связывать шаблон с этой страницей, и шаблону не нужен заголовок. WordPress автоматически использует шаблон front-page.php
для статической главной страницы, согласно иерархии шаблонов.
Чтобы ответить на ваш вопрос: сначала вам нужно вызвать the_post()
, чтобы установить глобальные переменные, от которых зависит функция the_content()
.
