Статьи

Пользовательский счетчик для Twitter и Feedburner

Я хотел бы поделиться простым способом, чтобы ваш счетчик подписчиков в Твиттере или общий счетчик читателей Feedburner с помощью пользовательских стилей на вашем сайте WordPress. Вы можете увидеть некоторые примеры на странице пользовательских счетчиков, чтобы понять, как эти счетчики могут выглядеть. Достаточно введения, давайте начнем.


Самое главное, как мы можем прочитать значение из Twitter и Feedburner, давайте сначала начнем с Twitter. Вы можете получить подробную информацию о своей учетной записи Twitter, посетив следующий URL-адрес: https://twitter.com/users/show/ insert-your-username-here Например, https://twitter.com/users/show/eizil , если щелкнув URL, вы увидите список информации о моей учетной записи Twitter в формате XML.

Мы можем сделать то же самое с Feedburner, вы можете использовать следующий URL для получения данных Feedburner: https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri= insert-your-username-here Для пример https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=eizil. Если вы нажмете URL-адрес, вы увидите информацию, касающуюся моей учетной записи Feedburner.

Итак, теперь у нас есть источник нашей информации, затем нам нужно прочитать значение XML с нашего веб-сайта для использования в нашем пользовательском счетчике. Мы будем использовать file_get_contents и функцию SimpleXMLElement для чтения значения из Twitter или Feedburner.

1
2
3
4
5
6
7
// read Feedburner data
            $data = file_get_contents(«https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=insert-your-username-here);
            $xml = new SimpleXMLElement($data);
 
// read Twitter data
            $data = file_get_contents ( ‘http://twitter.com/users/show/insert-your-username-here’);
            $xml = new SimpleXMLElement ( $data );

Теперь у нас есть все данные, которые нам нужны из Twitter и Feedburner, затем нам нужно прочитать значение подписчика и читателя из этих данных.

1
2
$total = $xml->feed->entry[‘circulation’];
$total = $xml->followers_count;

И мы объединяем этот код, чтобы получить итоги для Twitter и Feedburner, как в примере ниже.

1
2
3
4
5
6
7
8
// read Feedburner data
            $data = file_get_contents(«https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=insert-your-username-here);
            $xml = new SimpleXMLElement($data);
            $total = $xml->feed->entry[‘circulation’];
// read Twitter data
            $data = file_get_contents ( ‘http://twitter.com/users/show/insert-your-username-here’);
            $xml = new SimpleXMLElement ( $data );
            $total = $xml->followers_count;

У нас уже есть ценность для нашего счетчика, затем мы сделаем так, чтобы наш счетчик выглядел лучше. Мы будем использовать следующую структуру HTML для нашего счетчика.

1
2
3
4
5
6
7
8
<div class=»counter»>
  <div id=»feedcount»><a href=»http://feeds.feedburner.com/insert-your-username»></a>
    <span>Value
  </div>
  <div id=»twitcount»><a href=»http://twitter.com/insert-your-username»></a>
    <span>value
  </div>
</div>

Для стиля 1 в Custom Counter Page мы будем использовать следующий CSS:

1
2
3
4
5
6
7
8
9
.counter { float:left;
/* Feedburner counter */
#feedcount { float: left;
#feedcount a { width: 150px;
#feedcount span { position: absolute;
/* Twitter counter */
#twitcount { float: left;
#twitcount a { width: 150px;
#twitcount span { position: absolute;

Теперь у вас есть пользовательский счетчик, который будет использоваться в вашей теме WordPress.


На этом этапе мы уже знаем, как прочитать значение и как сделать простой счетчик, затем мы создадим новую функцию в файле темы functions.php для обработки этого запроса. Мы также добавим файл кэша для чтения этого значения, так как мы не хотим, чтобы счетчик пытался получить новое значение каждый раз, когда пользователь посещает наш сайт WordPress.

Давайте начнем с создания новой функции с именем getTwitFeedburnCount (), как в примере ниже

1
2
3
function getTwitFeedburnCount() {
 
}

Затем мы добавим две переменные в функцию, чтобы мы могли использовать это для Twitter и Feedburner, две переменные, которые мы собираемся использовать: 1. имя пользователя и 2. тип учетной записи. Эти два значения будут использоваться для определения того, какой код будет использоваться для извлечения значения, и в качестве идентификатора для нашего файла кэша.

1
2
3
function getTwitFeedburnCount($username, $type) {
 
}

Мы подготовим файл кэша в начале функции, сначала попробуем посмотреть, есть ли файл кэша, доступный для использования, или же мы получим новое значение из Twitter или Feedburner.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
function getTwitFeedburnCount($username, $type){
    if($type == «feedburner»):
        $cfile = sys_get_temp_dir().’/e1z’.
    elseif($type == «twitter»):
        $cfile = sys_get_temp_dir().’/e1z’.
    endif;
 
    if (is_file ( $cfile ) == false):
        $cfile_time = strtotime ( ‘1983-04-30 07:15’ );
    else:
        $cfile_time = filemtime ( $cfile );
    endif;
 
    $difference = strtotime ( date ( ‘Ymd H:i:s’ ) ) — $cfile_time;
 
    if ($difference >= 3600): // set the interval before updating the cache in seconds
        //fetch new value code goes here
    else:
        //read from cache file
    endif;
}

Весь кэш будет храниться во временной файловой системе, чтобы избежать каких-либо нарушений безопасности, если мы будем использовать папку в нашей теме или установке WordPress. Теперь мы можем добавить код, который фактически обрабатывает чтение из Twitter и Feedburner.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function getTwitFeedburnCount($username, $type){
    if($type == «feedburner»):
        $cfile = sys_get_temp_dir().’/e1z’.
    elseif($type == «twitter»):
        $cfile = sys_get_temp_dir().’/e1z’.
    endif;
 
    if (is_file ( $cfile ) == false):
        $cfile_time = strtotime ( ‘1983-04-30 07:15’ );
    else:
        $cfile_time = filemtime ( $cfile );
    endif;
 
    $difference = strtotime ( date ( ‘Ymd H:i:s’ ) ) — $cfile_time;
 
    if ($difference >= 3600): // set the interval before updating the cache
        if($type == «feedburner»):
 
            $data = file_get_contents(«https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=».$username);
            $xml = new SimpleXMLElement($data);
            $total = $xml->feed->entry[‘circulation’];
 
        elseif($type == «twitter»):
 
            $data = file_get_contents ( ‘http://twitter.com/users/show/’ . $username );
            $xml = new SimpleXMLElement ( $data );
            $total = $xml->followers_count;
          
        endif;
 
        if (is_file ( $cfile ) == true):
            unlink ( $cfile );
        endif;
            touch ( $cfile );
            file_put_contents ( $cfile, strval ( $total ) );
        return strval ( $total );
 
    else:
            $total = file_get_contents ( $cfile );
        return strval ( $total );
    endif;
}

Я должен напомнить вам одну вещь: Feedburner иногда сбрасывает значение, если вы извлекаете его вживую, и в итоге вы получаете ноль в качестве значения для вашего читателя. Быстрое решение для этого было бы прочитать значение Feedburner от 4 дней назад. Это необязательно, просто решение, если вы столкнетесь с проблемой, как я. Вам нужно добавить дату к вашей функции, как показано ниже:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function getTwitFeedburnCount($username, $type){
     
 
    if($type == «feedburner»):
        $cfile = sys_get_temp_dir().’/e1z’.
    elseif($type == «twitter»):
        $cfile = sys_get_temp_dir().’/e1z’.
    endif;
 
    if (is_file ( $cfile ) == false):
        $cfile_time = strtotime ( ‘1983-04-30 07:15’ );
    else:
        $cfile_time = filemtime ( $cfile );
    endif;
 
    $difference = strtotime ( date ( ‘Ymd H:i:s’ ) ) — $cfile_time;
 
    if ($difference >= 3600): // set the interval before updating the cache
        if($type == «feedburner»):
         
            $date = date(‘Ym-d’, strtotime(‘-4 days’));
            $data = file_get_contents(«https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=».$username.»&dates=».$date.»,».$date);
            $xml = new SimpleXMLElement($data);
            $total = $xml->feed->entry[‘circulation’];
 
        elseif($type == «twitter»):
 
            $data = file_get_contents ( ‘http://twitter.com/users/show/’ . $username );
            $xml = new SimpleXMLElement ( $data );
            $total = $xml->followers_count;
          
        endif;
 
        if (is_file ( $cfile ) == true):
            unlink ( $cfile );
        endif;
            touch ( $cfile );
            file_put_contents ( $cfile, strval ( $total ) );
        return strval ( $total );
 
    else:
            $total = file_get_contents ( $cfile );
        return strval ( $total );
    endif;
}

После того, как вы добавите эту функцию в свою тему, все готово.


Теперь, если вы хотите использовать функцию, пожалуйста, используйте следующий формат

1
2
echo getTwitFeedburnCount(«insert-your-username-here», «feedburner»);
echo getTwitFeedburnCount(«insert-your-username-here», «twitter»);

Вы можете поместить код вместе в HTML, как в примере, приведенном ниже

1
2
3
4
5
6
7
8
<div class=»counter»>
  <div id=»feedcount»><a href=»http://feeds.feedburner.com/insert-your-username»></a>
    <span><?php echo getTwitFeedburnCount(«insert-your-username-here», «feedburner»);
  </div>
  <div id=»twitcount»><a href=»http://twitter.com/insert-your-username»></a>
    <span><?php echo getTwitFeedburnCount(«insert-your-username-here», «feedburner»);
  </div>
</div>

Теперь вы должны иметь возможность использовать эту функцию в любой из ваших тем, вы можете скачать исходный файл, чтобы взглянуть на другие стили, как показано на странице пользовательских счетчиков . Делитесь со мной своим пользовательским счетчиком, особенно если вы создаете новый стиль для своей темы.