Atenção: Artigo com conteúdo altamente NERD!

google analytics

O WordPress é o software usado neste blog para gerenciar os conteudo, artigos e páginas. É um dos mais usados na internet, tem muitas coisas boas como o fato de oferecer código fonte aberto o que permite que milhares de desenvolvedores ao redor do mundo desenvolver plugins. O lado ruim é ser um gerenciador de conteúdo dinâmico onde as páginas são geradas toda vez que alguém a acessa, sendo assim muito pesado para o banco de dados, o que nos obriga a usar um plugin de cache.

Essa semana tive problemas de alto uso de CPU no meu servidor Grid do Media Temple. Ainda bem que lá eu posso detectar esse tipo de problema e tomar alguma atitude. Resumindo, o que fiz foi eliminar o uso do plugin pesadão Popularity Contest, que contabiliza os artigos mais visualizados, comentados e populares. Leia também meu artigo: Melhorar o desempenho do WordPress e resolver problemas de alta CPU

Para não ficar sem mostrar uma lista dos artigos mais acessados (era o que o plugin Popularity Contest fazia) fiquei pensando como obter esta lista através de um serviço terceiro de estatísticas, tal como o excelente Google Analytics. O Google Analytics oferece estatísticas para seu site/blog grátis, basta criar uma conta Google e inserir um pequeno código de rastreamento no seu site.

O Google Analytics oferece diversos relatórios, inclusive um com os artigos mais visitados, por que não tirar os dados de lá e colocar no blog?

Até poderia fazer isso manualmente, mas o interessante é automatizar o processo, e o Google Analytics já tem uma API de programação, chamada de Google Analytics Data API.

Comecei a estudar esta API e descobri que é possível mostrar qualquer dado estatístico do Google Analytics, como a linguagem de programação que sei me virar melhor é o php, encontrei outro recurso importante, o GA API PHP Class que facilita o uso de dados via php.

Acessar o Google Analytics via PHP

A minha idéia é fazer um script em php com a classe de API para Google Analytics para montar minha lista de “artigos populares”, com os que mais tiveram visitas.

O mesmo script poderia ser feito como neste exemplo em curl, mas a saída do script que encontrei só tinha saída em XML, e eu queria uma lista em html.

Um dado importante para usar a API é saber seu “table ID” do Google Analytics. Cada perfil de estatísticas do Google Analytics tem um número de identificação que pode ser visto em Analytics Settings > Profile Settings. Este número tem que ser acrescido do prefixo “ga” tal como ga:1231231.

Na dúvida use a página de exemplos em javascript do Google Analytics API, na seção de exemplo “Retrieve your Account” para visualizar as informações da sua conta. Você deve logar no Google Analytics antes de acessa a página de exemplos.

Para executar um script em php, bata usar o parâmetro -q (quiet mode) tal como:

php -q script.php

O script que eu criei chama-se top10.php, com referência nos exemplos da página do Google Analytics API e também da API de PHP.

O zip conté três arquivos: analytics_api.php top10-gus-sos.php e top10.html que é o resultado do script top10-gus-sos.php

Alguns parâmetros devem ser colocados dentro do top10.php tais como sua conta do Google, caminho de destino do arquivo top10.html com o resultado. Ele funciona na seguinte forma:

php -q top10.php filtro

O filtro que eu apliquei deve ser alguma palavra chave da URL, por que no meu caso que queria ter a opção de filtrar registros do mês ou do ano. A minha URL do wordpress é no formato /ANO-MES/ tal como então um artigo de julho de 2009 contém a palavra /2009/07 no seu endereço URL.

Filtro dos melhores artigos do mês (julho de 2009 como exemplo):

php -q top10.php /2009/07

Filtro dos melhores artigos do ano de 2009:

php -q top10.php /2009/

Dentro do script a linha que faz o filtro é assim:

$filters = new analytics_filters("ga:pagePath", "=@", $filter);

Notem que a palavra-chave =@ é um dos diversos operadores do Google Analytics, que no caso significa o mesmo que um “Like” ou “contém”. A comparação é:

O caminho da url (ga:pagePath) deverá conter (símbolo “=@”) a palavra chave na variável $filter.

Optei por executar o script com agendamento via cron, desta forma o processo é feito todo dia num horário fora de pico, gerando o arquivo top10.html que pode ser inserido no seu tema WordPress (Joomla ou qualquer outro) através do comando include do php.

Para executar o script toda meia noite filtrando os melhores artigos de 2009, basta usar o formato cron:

0 0 * * * /caminho-do-php/php -q /caminho-do-script-top-10/top10-gus-sos.php /2009/

É claro que sua URL do wordpress deve conter o ano par que isso seja possível. Se você omitir o filtro, o script funciona pegando os seus artigos mais visitados no ano.

Se tudo for configurado corretamente, um arquivo top10.html será criado na pasta que você indicou nas configurações.

Baixe o script php Melhores Artigos com Google Analytics:

script google analytics top 10

OBS: Caso tenha problema de permissões, crie o arquivo top10.html com o comando:

touch top10.html

e altere as permissões do arquivo para 666:

chmod 666 top10.html

Alguma dúvida? Deixe um comentário!

Exemplo do arquivo top10.html com os artigos mais visitados deste blog: