Приветствую всех.
Проблема: не выводятся аватары через виджет (неправильный путь к аватару).
Предлагаю в данной теме всем, кто может, оказывать помощь с выводом аватаров в различных виджетах, так как их предостаточно, а нормальная интеграция с ними пока не разработана. Искал на форуме по запросам: аватар, комментарии, нашел немного ...
Для начала размещаю, то что уже нашел здесь, и придется использовать если не поможете с тем, что у меня сейчас стоит и хотелось бы чтобы стояло дальше.
Плагин Decent Comments:
Открываем в плагине: class-decent-comments-renderer.php
Меняем: comment_author_email на user_id
$output .= get_avatar( $comment->comment_author_email, $avatar_size );
на:
$output .= get_avatar( $comment->user_id, $avatar_size );
А теперь о том. что стоит у меня, и что пробовал.
Плагин WP-RecentComments:
Обновляюсь сразу, так что версия последняя.
Нашел comment_author_email в файле core.php в двух местах (56, 74).
Поменял на user_id, но аватары не появились, так что буду благодарен если поможете …
Удачного всем времени …
Вечер добрый, Андрей.
Попробовал,пока не сработало. Браузеры 2, чистил. Может следующая дополнительная информация пригодится:
01. Сейчас у тестируемого аватара из профиля путь:
(в виджете на сайте 1 сверху)
02. С виджета:
03. До этого стоял плагин Simple Local Avatars, пока деактивирован, но не удален, аватары с ПК загружали через него
04. В этой строчке $comments_query = "SELECT comment_author, comment_author_email, ... ничего не менял, только то, что указали ...
Посмотрев этот плагин я нашел причину в неправильной работе регулярного выражения в функции
function rc_get_avatar_url($code) { return preg_replace(array('/^.+(src=)("|')/i', '/("|')sclass=("|').+$/i', '/&/i'), array('', '', '&'), $code); }
эта функция должна вытаскивать из кода аватара пользователя только src на аватар, но не делает это корректно.
Так что проблема в самом плагине, который кстати, не обновляется уже 2 года. Если переписать регулярку корректно, то можно добиться нормальной работы.
Сходил в поиск по: function rc_get_avatar_url
Нашел решение здесь:
Заменил указанный выше код на:
function rc_get_avatar_url($code) {
//MY FIX - START
$quotes = array('"', "'");
foreach ($quotes as $q) {
$pos_start = strpos($code, $q.'http');
$pos_end = strpos($code, $q, $pos_start + 1);
if ($pos_start !== false && $pos_end !== false) {
$src = substr($code, $pos_start + 1, $pos_end - $pos_start - 1);
$src = preg_replace(array('/&/i'), array('&'), $src);
return $src;
}
}
//MY FIX - END
return preg_replace(array('/^.+(src=)("|')/i', '/("|')sclass=("|').+$/i', '/&/i'), array('', '', '&'), $code);
}
Аватары появились, буду тестировать, если проблем не будет, значит вывод аватаров в WP-RecentComments решен, то есть надо:
в файле core.php изменить приведенные выше строку и код.
Андрей благодарю за серьезную помощь от себя лично, и от тех, кому этот материал еще поможет в будущем. Кажется мелочь, а пол суток времени отняла ...
Аватары в комментариях записях.
Пока занимался виджетом обратил внимание что в комментариях материалов (записи) аватара нет, пришлось искать решение. Оказалось что в некоторых темах этого вывода просто нет. Нашлось решение здесь:
Мои действия:
01. Открываем в используемой теме файл comments.php
02. Находим все comment
03. Находим где рядом есть comment_author_link
04. Над ним ставим: php echo get_avatar($comment, 40); // вывод аватаров (в php формате)
05. Проверяем появление аватаров в комментариях любой записи.
Сейчас тестирую, пока полет нормальный ...