До тех пор, пока существует объект $ post, вы технически «в цикле» - даже если в объекте запроса существует только одно сообщение, что имеет место в single.php. Пока вы выполнили the_post(); доступны теги шаблонов, поэтому the_author(); будет работать нормально. Если вы хотите указать на архивы автора the_author_posts_link(); выведет ссылку на соответствующий архив, а также имя автора в якорный текст.
UPDATE:
Кроме того, ваш код не так. the_author echos имя автора, get_the_author() будет рассматривать его как переменную. Это будет работать:
<?php the_post(); ?>
<div class="bar_info">
By: <?php the_author(); ?>
<?php
foreach((get_the_category()) as $category) {
echo category->cat_name.', ';
}
?>
</div>
В качестве альтернативы это также будет работать:
<?php the_post(); ?>
<div class="bar_info">
echo "By: " . get_the_author();
foreach((get_the_category()) as $category) {
echo category->cat_name.', ';
}
?>
</div>
Я не понимаю. вы все еще используете цикл в 'single.php', поэтому вы все равно можете использовать' the_author(); 'или' get_the_author(); ', etch. – Ohgodwhy