При создании страниц архива постов в WordPress, часто возникает необходимость выводить имя автора в заголовке. Если вы работаете с архивом автора и используете функцию the_author()
, вы можете столкнуться с проблемой: эта функция возвращает имя автора только внутри цикла loop
.
Проблема
В вашем случае, вы пытаетесь использовать the_author()
в файле archive.php
, где необходимо вывести имя автора в заголовке страницы для архива автора:
<?php if (is_author()) { ?><h2 class="title">Статьи автора: <?php the_author(); ?></h2>
Однако вы получаете только «Статьи автора:», без имени. Это происходит потому, что на этом этапе WordPress еще не находится в цикле, и функция the_author()
не может получить данные о текущем авторе.
Решение
Чтобы вывести имя автора на странице архива, вам нужно использовать функцию get_the_author()
или get_the_author_meta()
. Эти функции позволяют получать информацию об авторе без необходимости находиться в цикле.
Вот как вы можете это сделать:
- Используйте
get_the_author()
: Эта функция возвращает имя автора текущего поста. Для страницы архива автора вы можете использовать следующий код:
<?php if (is_author()) {
$author = get_queried_object(); // Получаем объект текущего автора
?><h2 class="title">Статьи автора: <?php echo esc_html($author->display_name); ?></h2><?php
}
Полный код для archive.php
:
<?php if (is_category()) { ?>
<h2 class="title">Категория: <?php single_cat_title(); ?></h2>
<?php } elseif (is_tag()) { ?>
<h2 class="title">Статьи под меткой: <?php single_tag_title(); ?></h2>
<?php } elseif (is_day()) { ?>
<h2 class="title">Архив статей за: <?php the_time('j F Y'); ?></h2>
<?php } elseif (is_author()) {
$author = get_queried_object(); // Получаем объект текущего автора
?><h2 class="title">Статьи автора: <?php echo esc_html($author->display_name); ?></h2><?php
} ?>
Объяснение кода
get_queried_object()
: Эта функция возвращает объект, представляющий текущий запрос. В случае архива автора это будет объект, содержащий информацию об авторе.$author->display_name
: Это свойство объекта автора, которое содержит отображаемое имя автора.esc_html()
: Эта функция используется для экранирования имени автора перед выводом, чтобы предотвратить потенциальные уязвимости XSS (межсайтовый скриптинг).
Заключение
Используя get_queried_object()
и доступ к свойству display_name
, вы сможете вывести имя автора на страницах архива без необходимости находиться в цикле. Это решение решает вашу проблему и делает заголовок страниц более информативным для посетителей.