Как подружить Twitter и WordPress. Часть 2

14 мая, 2010 г. Категория: WordPress Ретвитнуть этот пост

wordpress twitter 2 Как подружить Twitter и WordPress. Часть 2 В первой части я рассказывал о том, как можно легко сделать удобную кнопку Retweet для Вашего блога на WordPress, которая умеет сокращать ссылки. Сегодня, уже во второй части, я научу Вас выводить последние сообщения из Twitter-ленты пользователя с минимальной нагрузкой на сервер (используя кеширование).

То, что получится в итоге можно посмотреть у меня на блоге в самом низу сайдбара (правая колонка). Там выводятся последние 5 твитов из моей ленты.

В первую очередь нам нужно создать файл, например назовем его twitter.php, в который требуется поместить следующий код, предварительно поменяв параметры на свои (читайте комментарии в коде):

<?php
/*
Template Name: Twitter
*/

// Выводим нужное количество постов с твиттера + кешируем. Врема жизни кеша — 5 минут.
// Author: Spoofi
// Author-URL: http://www.spoofi.ru/  

// Настройки:
        $username = "spoofi"; // имя в твиттере
        $feedURL = "http://twitter.com/statuses/user_timeline/23056352.rss"; // Адрес RSS вашего твиттера
        $limit = 5; // сколько сообщений выводить?
        $time_live = 300; // время жизни кеша (в секундах)
        $before = "<li>"; // до твита
        $after = "</li>";     // после твита
    $before_all = "<ul>"; // Выводим это ДО всех твитов
    $after_all = "</ul>"; // после всего.

echo $before_all;

// Кеширование и вывод:
$d=@file("twitter.cache");
$fs=trim($d[1]);

if (intval($d[0])<time()$time_live || empty($fs))
{
        $fw=fopen("twitter.cache","w");
       //       flock ($fw, LOCK_EX);
        @fputs($fw,time()."\n");
        $doc = new DOMDocument();
        $doc->load($feedURL);
        $arrFeeds = array();
        foreach ($doc->getElementsByTagName('item') as $node)
        {
                $itemRSS = array ('title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
               );
                array_push($arrFeeds, $itemRSS);
        }
        for($x=0;$x<$limit;$x++)
        {
        $title = @str_replace($username.': ','',$arrFeeds[$x]['title']); // заменяем строчку
        $str = @ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<noindex><a href=\"\\0\" rel=\"nofollow\" target=\"_blank\">\\0</a></noindex>", $title);
        $pattern = '/[#|@][^\s]*/';
        preg_match_all($pattern, $str, $matches);      
 
                foreach($matches[0] as $keyword)
                {
                        $keyword = str_replace(")","",$keyword);
            $link = str_replace("#","%23",$keyword);
            $link = str_replace("@","",$keyword);
            if(strstr($keyword,"@"))
            {
                $search = "<noindex><a href=\"http://twitter.com/$link\" rel=\"nofollow\" target=\"_blank\">$keyword</a></noindex>";
            }
            else
            {
                $link = urlencode($link);
                $search = "<noindex><a href=\"http://twitter.com/#search?q=$link\" rel=\"nofollow\" target=\"_blank\">$keyword</a></noindex>";
            }
            $str = str_replace($keyword, $search, $str);
                }
                echo $before.$str.$after;
                echo "<br />";
        @fputs($fw,trim($str)."\n");           
        }      
        @fclose($fw);

       

}
else // Чтение из кеша:
{
        $file = file("twitter.cache");
        for ($i=1;$i <= $limit;$i++)
        {
                echo $before.$file[$i].$after;
                echo "<br />";
        }
}
echo $after_all;
?>

Файл нужно обязательно сохранить в кодировке UTF-8! Иначе может всё очень криво отображаться.

После того, как наш скрипт готов, нужно залить его в папку темы:

/wp-content/themes/имя-темы/
Важно: так как для уменьшения нагрузки на сервер я использую кеширование здесь нам понадобиться файл twitter.cache с правами на запись. Я рекомендую не опытным пользователям просто выставить права 777 на директорию
/wp-content/themes/имя-темы/

делается это очень просто через FTP клиент, либо через ssh:

chmod 777 путь/wp-content/themes/имя-темы/

Затем, можно проверить как работает скрипт просто зайдя на эту страничку — http://блог.ру/wp-content/themes/имя-темы/twitter.php
Если Твиты выводятся — значит все работает и остались последние штрихи.

Через админку WP заходим в редактор тем, ищем файл, который отвечает за сайдбар и в нужном нам мместе вставляем простенький код:

<?php echo file_get_contents("http://блог.ру/wp-content/themes/deep-mix/twitter.php"); ?>


Для примера, у меня это выглядит так:

<h2>Мой Twitter</h2>
<?php echo file_get_contents("http://www.spoofi.ru/wp-content/themes/deep-mix/twitter.php"); ?>

Вот и все! Теперь при просмотре любой страницы, где выводится сайдбар пользователи увидят Ваши последние сообщения с Twitter'а.

Примечание: скрипт я постарался сделать так, чтобы было максимум нужных насроек. Например, можно указать что нужно выводить до и после каждого твита, а также что вывести перед и после всего блока. У меня это используется для вывода твитов как списка.


Каждый из нас, блоггеров, пишет для души, а также для кое-какого заработка, не правда ли? Все мы хотим заработать в интернете, но не все знают, как это сделать и с чего начать. О том, как заработать в интернете, Вы узнаете из блога profynet.ru!

Метки: ,

Блог об интернете


  • А почему не воспользоваться решением на JS. И никакой нагрузки на сервер и всего 1 js файлик. ? У меня в блоге именно так.
  • Не сильно люблю JS, но всё-таки в таких случаях он хорош :)
    Просто есть разные способы, я предложил один из них.

    А как еще выводить твиты мы в твитттере уже обсуждали, как помниться (: через json вроде.
Система комментариев DISQUS