Skip to content

Plugin

fevereiro 14, 2010

Criando um plugin

11/02/2009 Por: Marcelo em: Documentação

Os plugins são funcionalidades extras que podem ser agregadas ao sistema padrão. O ideal é que os plugins funcionem sem realizar alterações na base do sistema (hacks), assim os usuários não ficam reféns dos plugins e quando surgirem atualizações do sistema base o usuário poderá realizá-las sem perigo de perder seus dados ou deixar seu site fora do ar.

No WordPress, os plugins ficam na pasta ‘wp-config/plugins/’. O WordPress lê o início de todos os arquivos nessa pasta a procura dos indicadores de plugin, que são algumas palavras-chave informadas em forma de comentário. Segue o formato básico das informações de um plugin:

<?php
/*
Plugin Name: Nome do plugin
Plugin URI: http://endereco.do.plugin/
Description: Descrição do plugin
Version: Versão do plugin, ex.: 1.0
Author: Nome do autor do plugin
Author URI: http://endereco.do.autor/
*/
?>

Todas essas informações devem estar no início do arquivo de seu plugin para que o WordPress os reconheça e os adicione ao gerenciador de plugins. Ao ativar um plugin o WordPress simplesmente adiciona o arquivo à lista de inclusões e a partir daí é que seu plugin começa a trabalhar.

Um plugin pode trabalhar de diversas formas, ele pode ser apenas uma função que precisa de uma chamada num tema para que funcione, ou filtrar alguma informação passada automaticamente pelo WP, ou salvar outros dados, ou tantas outras utilidades.

Hooks

Cada coisa a seu tempo, vamos começar com algo simples: como interagir com o WordPress sem hackea-lo (alterar seu núcleo). Usemos como exemplo o plugin ‘Hello Dolly’, que vem por padrão nas instalações do WP. Esse plugin mostra, no topo da área administrativa, uma mensagem randômica a cada navegação.

Mas como fazer para adicionar um texto na área administrativa do WordPress sem mexer no código do WordPress?
O que acontece é que em diversos pontos-chave do sistema existem ‘ganchos’ (hooks). Quando deparado com esses ganchos o WordPress interrompe seu processamento e verifica se existe alguma(s) função(ões) que usa(m) esse gancho para fazer alguma coisa. Caso exista, a(s) função(ões) é(são) executada(s) antes do WP voltar ao seu processamento normal.

Existem dois tipos de gancho: o ‘action’ que chama a função em determinado ponto; e o ‘filter’ que passa para a função um conteúdo como argumento, assim a função pode usar esse conteúdo para realizar sua tarefa.

Actions

O plugin ‘Hello Dolly’ usa ‘add_action(’admin_footer’, ‘hello_dolly’)’, dessa formam quando o WordPress chega no gancho ‘admin_footer’, a função ‘hello_dolly’ é chamada e carrega o texto aleatório.

Filters

Diferente do ‘action’, o ‘filter’ é usado para modificar conteúdos, por exemplo, se você quer destacar seu nome no conteúdo de seus posts, adicione um filtro ‘add_filter(’the_content’, ’sua_funcao’)’, onde ’sua_funcao’ varre o conteúdo e adiciona negrito as ocorrencias de seu nome. É importante que a função usada nos filtros sempre retorne o valor processado, caso contrário o conteúdo original será restaurado.

Para resumir segue um exemplo de um plugin que corrige as ocorrências de ‘wordpress’ para ‘WordPress’ no conteúdo dos posts:

<?php
  /*
  Plugin Name: Corretor WP
  Description: Corrige todas as ocorrências de 'wordpress' para 'WordPress' no conteúdo dos posts
  Version: 0.1
  Author: Marcelo Mesquita
  Author URI: http://marcelomesquita.com/
  */

  function corrige_WP($content)
  {
    $content_corrigido = str_replace('wordpress', 'WordPress', $content);

    return $content_corrigido;
  }

  add_filter('the_content', 'corrige_WP');

?>

Para saber mais sobre Hooks visite a API dos Plugin do WordPress.

Adicionando bibliotecas javascript ao seu tema ou plugin

14/01/2009 Por: Marcelo em: Documentação

Normalmente quando se está desenvolvendo um tema ou um plugin você sente a necessidade de utilizar alguma biblioteca em javascript para facilitar a realização de determinada tarefa. A maneira mais fácil é sem dúvida utilizando a tag ‘<script>’ no corpo do seu arquivo. Agora imagine que todos os desenvolvedores que utilizam jquery resolvam adicionar as chamadas à biblioteca no corpo de seus plugins. Usuários que possuam vários plugins ativos provavelmente terão uma baita dor de cabeça mais cedo ou mais tarde quando esses plugins causarem algum conflito.

Como não podia deixar de ser, o WordPress já tem uma solução para os nossos problemas. Uma função chamada ‘wp_enqueue_scripts’ que é responsável por enfileirar e ordenar a chamada das bibliotecas, evitando assim a duplicação de arquivos e, possibilitanto, o carregamento das dependências antes.

A primeira coisa que você deve fazer é registrar a biblioteca para que o WordPress saiba que ela existe. Isso deve ser feito utilizando a seguinte função:

wp_register_script($handle, $src, $deps = array(), $ver = false)

O parâmetro obrigatório ‘$handle’ é o identificador único da biblioteca, o nome pelo qual o WordPress saberá quem é quem no conjunto de bibliotecas disponível. Em seguida vem o ‘$src’, que informa o endereço do arquivo, também obrigatório. Caso esse arquivo tenha alguma dependência, esta deve ser informadas em ‘$deps’ no formato de array, onde cada item do array é uma dependência a ser satisfeita. Essas dependências são informadas pelo ‘$handle’ das respectivas dependências. E por último (e menos importante) ‘$ver’ é a versão do script.

Não é possível registrar um script que já esteja registrado. Caso você tente, seu script será ignorado. Mas se for realmente necessário, você pode remover um script anterior para adicionar o seu. Isso pode acontecer quando você desenvolve para versões mais antigas do WP. Para remover um script utilize:

wp_deregister_script($handle)

Onde ‘$handle’ é o identificador do script que você deseja remover.

Depois de definidos, os scripts e suas dependências, você deve informar quais scripts devem ser carregados e onde eles serão carregados. Para a primeira questão, use:

wp_enqueue_script($handle, $src = false, $deps = array(), $ver = false)

Apesar de todos os parêmetros dessa função, o único obrigatório é o ‘$handle’ que informa qual o script será carregado. Os outros parâmetros são exatamente iguais aos parâmetros do wp_register_script e funcionam da mesma forma. A resposta pra isso é que se o script definido pelo $handle não estiver registrado o WordPress utiliza o atual.

Pronto! Agora só falta informar onde o script deve ser carregado. Nos temas, basta colocar a chamada ‘wp_queue_script’ no template onde a biblioteca será utilizada e o ‘wp_head’ faz o resto. Assim, se você pretende usar a biblioteca jquery nos resultados das buscas, adicione ao search.php a linha:

<?php wp_enqueue_script('jquery'); ?>

Já na área administrativa você precisa criar uma função que carregue o script e adiciona-la à ação ‘init’, por exemplo:

function load_scripts()
{
wp_enqueue_script('jquery');
}
 
add_action('init', 'load_scripts');

É isso… essa explicação também se aplica aos estilos você só precisa mudar as funções para ‘wp_register_style’, ‘wp_deregister_style’ e ‘wp_enqueue_style’ respectivamente. E para conferir os scripts e estilos que o WordPress carrega por padrão, confira o arquivo script-loader.php na pasta wp-includes.

Anúncios
No comments yet

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: