Как вывести имя автора на странице архива постов автора в WordPress

При создании страниц архива постов в 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(). Эти функции позволяют получать информацию об авторе без необходимости находиться в цикле.

Вот как вы можете это сделать:

  1. Используйте 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, вы сможете вывести имя автора на страницах архива без необходимости находиться в цикле. Это решение решает вашу проблему и делает заголовок страниц более информативным для посетителей.

Почитаем еще?: