Приветствую!
Составляю код для отображения в сайдбаре изображения автора через функцию get_avatar на странице одиночной записи. Пока есть такое:
<?php if (is_single())
{
echo "<ul><li class=\"widget\"><h2 class=\"widgettitle\">Author</h2><ul>";
echo get_avatar('the_author_ID();', '80', 'http://site.com/files/<?php the_author_ID(); ?>.jpg');
the_author();
echo "</ul></li></ul>";
}
?>
По идее должно брать из паки files изображение с номером, который соот-т ID автора. На деле получается адрес изображения:
http://site.com/files/?php_the_author_ID;_?_jpg&s=80
Помогите пожалуйста с этой вставной функцией адреса изображения.
Это тоже не помогает:
пришел к более простому варианту, но все равно проблема вывысти the_author_ID внутри echo.
Решение:
Тяжелый случай. Смотрим Кодекс http://codex.wordpress.org/Template_Tags/the_author_ID : Displays the unique numeric user ID и далее This tag must be used within The Loop. Понимаете? Не возвращает, а выводит. И имеет смысл только внутри Цикла. Да если бы и возвращала, то такое
echo "<img src=\"http://site.com/files/the_author_ID();.jpg\"
все равно ни в какие ворота не лезет. Пишем так:
и не удивляемся, если все равно не работает. Ибо стоит в сайдбре, а не в Цикле.
Тогда делаем по-человечески, то есть в Цикле пишем
а в сайдбаре уже так
Возможно, в зависимости от метода подключения сайдбара, понадобится добавить
Еще раз повторю английскую поговорку. Сел на велосипед – крути педали. В смысле – учи PHP.
PS the_author() в сайдбаре тоже под сомнением.
да, тяжелый случай. пхп учить придется, да. 😉
хм, а вот так кстати заработало:
Спасибо!
Поздравляю! Имейте в виду, что если после Цикла и перед этим кодом что-то поменяет значение глобальных переменных, может возникнуть забавная ситуация. Так что код шаблонозависимый, можно сказать.
2 шаблона – переделывались с кубрика и sandbox – работают 🙂
кстати:
Using Author Template Tags Outside of the WordPress Loop
уважаемый Ю.Б., а если я сделал в другом шаблоне по вашей полной инструкции и у меня не заработало – в чем может быть проблема?
Мы же вас предупреждали: "Так что код шаблонозависимый, можно сказать." 🙂
Извините, Бог телепатией не наградил, так что причину Вам придется искать самостоятельно. Советую обратить внимание на порядок вызовов, может использование переменной идет до ее определения.
да, поменял некоторым образом расположение этого блока (с левого сайдбара в правый) и получилось. правда пришлось использовать старый код. спасибо!