Contagem de Compartilhamentos Pesando Zero no Servidor

Esta é uma alternativa extremamente leve para contagem de compartilhamentos em posts WordPress.


Em tempos de “sinais sociais” sendo extremamente valorizados pelo pessoal que entende de SEO (porque estes entendem que o Google esteja valorizando extremamente tais sinais) virou imperativo que toda página na Internet tenha um meio de permitir facilmente a um visitante interagir com a página via redes sociais. Em outras palavras, todo mundo quer que o visitante compartilhe seu conteúdo o quanto puder, para melhorar o que for possível a visibilidade de cada página.

Existem muitas maneiras de se obter tal efeito, desde os botões oficiais (e horrorosos) das redes sociais até widgets e plugins pagos que permitem toda sorte de personalização, sendo que a contagem de compartilhamentos é fundamental (nem que para o ego do dono da página — mas sabemos que as pessoas tendem a compartilhar mais aquilo que já é relativamente “famoso”).

Acontece que, em se tratando de WordPress, estes contadores de compartilhamentos costumam cobrar um alto preço em termos de consumo de recursos de processamento. Não tem cache que segure a onda, porque a cada visualização de página o script precisa fazer uma chamada ao servidor para obter a contagem atualizada dos compartilhamentos; um post que caia nas graças da audiência pode implicar facilmente milhares de requisições por segundo, sem exagero de minha parte.

Este problema vinha me incomodando há um bom tempo, e depois de alguma pesquisa descobri uma técnica capaz de trazer a funcionalidade dos plugins mais vorazes para o WordPress (na prática, qualquer página HTML) utilizando apenas recursos client side, ou seja, no navegador do visitante — pesando nada, zero, niente, nihil, nothing no servidor.

O resultado final é um plugin WordPress muito simples (mas muito mesmo), facilmente adaptável para outros usos, facilmente personalizável e que facilmente pode ficar muito mais bonito — depende apenas da vontade e do conhecimento de quem for usar.′

A teoria geral

O autor do código que faz a requisição e trata os dados de cada serviço de compartilhamento é o Sr Per Kristian Haakonsen, que escreveu uma classe jQuery que encapsula a “complicação” do JSONP.

Não vou entrar em detalhes, apenas pedir que quem esteja curioso acerca do assunto que leia o post original do norueguês, onde ele explica tudo em detalhes: Javascript Class For Getting URL Shares On Facebook, Twitter And LinkedIn.

Código para escovadores de bits

O plugin é composto de três arquivos: o JavaScript original e sem nenhuma modificação, conforme a licença de uso do Haakonsen; uma folha de estilo com meia dúzia de regras para personalizar a aparência de tudo; e um script PHP (o plugin propriamente dito) que acrescenta o código ao final de cada post para gerar os botões de compartilhamento com a respectiva contagem. Vou apresentar o código dos dois últimos aqui.

A folha de estilos

Nossa folha de estilos é muito simples:

Se alguma coisa merece destaque é a media query no final do código, que trata de ocultar o botão do WhatsApp em dispositivos cuja tela tenha mais de 600px de largura.

O plugin em PHP

Atenção: o código abaixo serve apenas como referência; para obter o código completo você deverá baixar o arquivo do plugin, cujo link encontra-se mais abaixo nesta página.

A segunda parte do código faz a inclusão do HTML correspondente aos botões de compartilhamento usando um filtro padrão do WordPress:

Download

O plugin completo (em formato .zip) pode ser baixado do link abaixo:

client-side-share-count.zip

Garantias e suporte

Naturalmente, não posso dar garantias de que o plugin vá funcionar para você tão bem quanto funciona para mim. Da mesma forma, não posso oferecer ajuda de nenhum tipo, caso as coisas não deem certo (mas você pode deixar um comentário abaixo, sempre tem uma alma caridosa que tenta ajudar).

Caso queira ver o resultado final do script, apenas observe esta página mesmo, e veja os botões gigantes logo ao final (e se o fizer pelo celular ainda vai poder ver o botãozinho do WhatsApp).

Melhorias possíveis

Este plugin foi desenvolvido principalmente como uma prova de conceito, e não para ser um “produto.”

Destarte, muitas melhorias se mostram possíveis, mas eu mesmo não tenho intenção de implementar nenhuma (mas nunca se sabe). Entre elas eu destacaria:

  • opções administrativas para habilitar ou desabilitar serviços específicos;
  • uma maneira de pelo menos tentar contar os compartilhamentos via WhatsApp (o que é impossível atualmente);
  • opções administrativas para personalizar os botões, ou talvez criar uma galeria de estilos para eles;
  • detecção mais eficiente de dispositivo, para ocultar corretamente o botão do WhatsApp;
  • reescrita de código para garantir que dependências sejam carregadas automaticamente (no momento eu apenas confio que o tema vai ter a jQuery carregada).

Se quiser expandir o plugin, por favor me informe usando os comentários deste post.

Atualizações

O Twitter não permite mais contagem de compartilhamentos, não é defeito do nosso script. Saiba mais.

  • 07/09/2016: atualizada a versão do Font-Awesome para refletir atualizações nos ícones.
  • 07/09/2016: atualização no código JavaScript para adequá-lo a alterações na API do Facebook que implicaram inconsistência na contagem de compartilhamentos.
  • 07/09/2016: adicionado código para fazer compartihamento e contagem do Google+.
  • 06/06/2015: adicionada opção de atualizar automaticamente as contagens a cada 30s.
  • 12/06/2015: em vez de abrir uma nova aba, agora o botão de compartilhamento abre um popup.
  • 29/02/2016: ajustes no código para torná-lo mais compatível com sites usando URLs relativas; remoção do código de contagem do Twitter (ver início desta página).

Compartilhe

Avalie este conteúdo!

Avaliação média: 4.56
Total de Votos: 9
Contagem de Compartilhamentos Pesando Zero no Servidor

Janio Sarmento
Administrador de sistemas, humanista, progressista, apreciador de computadores e bugigangas eletrônicas, acredita que os blogs nunca morrerão, por mais que as redes sociais pareçam cada vez mais sedutoras para as grandes massas.

Comente!

This site uses Akismet to reduce spam. Learn how your comment data is processed.