2013-05-28 6 views
2

Мне нужно отобразить Автору сообщения в файле single.php в Wordpress. Ссылка указывает, что the_author(); работает только внутри цикла.Показать имя автора в single.php (Wordpress)

Я искал другие форумы и ничего не нашел.

Любая идея?

Спасибо.

EDIT:

<div class="bar_info"> 
     <?php echo "By: ".the_author(); ?> 
     <?php 
       foreach((get_the_category()) as $category) { 
        echo category->cat_name.', '; 
       } 
     ?> 
    </div> 
+0

Я не понимаю. вы все еще используете цикл в 'single.php', поэтому вы все равно можете использовать' the_author(); 'или' get_the_author(); ', etch. – Ohgodwhy

ответ

6

В вашем single.php, вы, скорее всего, вызов the_post(). Вы найдете WordPresstemplate tags будет работать нормально после этой строки. Другими словами, вы можете использовать the_author в single.php.

Edit: на основе кода вы обновляемой в вашем вопросе, вам нужно поставить что-то вроде следующего в верхней части single.php:

<?php if(have_posts()) the_post(); ?>

Кроме того, если вы хотите чтобы использовать имя автора в заявлении echo, вместо этого используйте get_the_author. the_author на самом деле эхо это уже для вас.

+0

У меня есть код, отредактированный в главном вопросе, а the_author не работает в single.php, но в php-файлах, где есть цикл, да. – Apalabrados

+0

Невероятно ..... если включить такую ​​линию, она работает! – Apalabrados

+1

Awesome. Я рад, что смогу помочь. –

1

До тех пор, пока существует объект $ 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> 
Смежные вопросы