Вчера заметил, что после переезда на новый хостинг стал криво работать плагин 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.