Плагин lj-userpic и его извращение…

Вчера заметил, что после переезда на новый хостинг стал криво работать плагин wp-lj-userpic. Суть плагина в том, что он обрабатывает поля OpenID/HomePage коментатора, ищет в них слово livejournal, найдя которое пытается вытянуть RSS канал ЖЖ-юзера и выдрать из него аватар, который и отображается вместо стандартной “пустышки” в списке коментариев.

Это как должно быть, а на практике сей скрипт стал обрабатывать RSS каким-то неведомым способом, в результате которого часть коментаторов получают свой аватар из ЖЖ, а другая нет…

Взялся копать…

По дефолту скрипт использует стандартные библиотеки WordPress, на которых и возникает затык. Почему – непонятно… при одних и тех же входных данных, но разных пользователях у одного аватара есть, у другого нет… а, да… все тоже самое, но на localhost работает.

“ты спроси у yandex-а, ты спроси у google-а” *напевает*

Решение проблемы нарисовалось быстро – необходимо немного извратить плагин…

В файле wp-lj-userpic.php заменить две строчки:

$rss = fetch_rss($url);
$userpic = $rss->image['url'];

Вместо них вписать:

$rss =  simplexml_load_file($url);
$userpic =  $rss->channel->image->url;

simplexml_load_file() – функция PHP5, по этому, может случиться, что и она не поможет.

А узкое место всего этого плагина в том, что он обрабатывает весь RSS от ЖЖ-юзера, даже если в итоге нужна только одна строчка, что не всегда хорошее решение…

Для расширения кругозора, можно посмотреть заметку Все о парсинге RSS лент средствами PHP.

Рубрика:  




Похожие записи:



  • http://it.sander.su/ it.sander.su/

    А как вообще правильно отдавать аватар по OpenID?
    У меня самостоятельно настроенный, в принципе, стоило бы сделать…

  • http://ashar-kant.livejournal.com/ Ashar

    На сколько мне известно, универсального способа нет… разве, что wp-lj-userpic настроен именно на Livejournal, работает по принципу чтения RSS потока автора и берет из нее channel->image->url, а если не находит, то лепит стандартную пустышку (если ЖЖ пользователь не определил аватар используемый по умолчанию). Естественно, с других OpenID он ничего не берет…

    Условно универсальный способ, это сервис gravatar.com, зарегистрировавшись на котором можно видеть свою аватару на сайтах с его поддержкой (для wordpress должен быть установлен специальный плагин, подробней тут. http://codex.wordpress.org/Using_Gravatars

    Еще, это открытая регистрация на сайте… но, увы, это вообще не вариант.

    На том мои знания заканчиваются, если есть еще какие-либо варианты, готов выслушать… :)

  • http://it.sander.su/ it.sander.su/

    Спасибо за ссылку, надо будет попробовать поиграть в эти граватары!