No iMasters CMS Brasil 2009 palestrei sobre como Criar um plugin para WordPress. No iMasters PRO vou ministrar o treinamento Desenvolvimento de Plugins e Temas para WordPress, e neste artigo vou abordar o assunto de forma genérica, mas ao mesmo tempo prática e esclarecedora.
O que é um plugin WordPress?
Um plugin WordPress é um programa, um conjunto de uma ou várias funções,
escrito em PHP e que adiciona recursos ou serviços específicos ao WordPress através
de sua API.
Logo melhoramos funcionalidades, estendemos a capacidade do WordPress
ao limite da nossa imaginação através de pequenas aplicações ou
complexos sistemas.
Estrutura de um plugin WordPress
Nome de plugins
O nome do plugin a ser criado precisa ser único e descritivo. É aconselhável consultar o diretório de plugins WordPress para verificar
se o nome escolhido realmente é único; outra opção é fazer uma busca no
Google utilizando como termo da pesquisa o nome desejado.
Os nomes de plugins, em sua maioria, descrevem sua utilidade. Ou seja,
utilize no nome do plugin algo que o descreva, que diga o que ele faz.
O nome do plugin pode conter várias palavras. Por exemplo,
“Desenvolvimento de Plugins WordPress” é um nome válido, único e
descritivo para um plugin.
Arquivos de plugin
Uma vez escolhido o nome do plugin, podemos nomear os arquivos relacionados. No
exemplo acima, o nome do plugin foi “Desenvolvimento de Plugins
WordPress”. Logo, o nome do arquivo pode ser
“desenvolvimento-de-plugins-wordpress.php”.
Um plugin WordPress precisa ter no mínimo um arquivo PHP, que deverá ser nomeado assim como
o nome dos plugins. Ou seja, com um nome único. Todos plugins são
armazenados num mesmo diretório; com nomes únicos eles não conflitam e
não se sobrescrevem.
Seu plugin pode conter diversos arquivos
JavaScript, CSS, PHP, pastas, imagens, entre outros. Se este for o seu
caso, crie uma pasta com um nome único e armazene todos os arquivos
dentro dela. Por exemplo,
desenvolvimento-de-plugins-wordpress/desenvolvimento-de-plugins-wordpress.php.
Todos os plugins WordPress são armazenados sob o diretório /wp-content/plugins/. Veja um exemplo:
API de plugin do WordPress
Até a versão 1.2 do WordPress era
necessário editar seus códigos fonte a fim de realizar alguma
modificação; tal modificação era conhecida como “hacks”. Dessa versão
em diante é possível acrescentar funcionalidades e alterar
comportamentos padrão sem editar uma linha do CORE do WordPress.
A
API de plugins do WordPress é conhecida como “Hooks”; ganchos em
tradução livre. Além de serem conhecidas, também, como “Filters” e
“Actions”, Filtros e Ações respectivamente. Através desses ganchos, o
WordPress permite que seu plugin execute funções em determinados
momentos e coloca seu plugin literalmente em ação.
Nota:
Uma lista, não oficial, com todas “Actions” e “Filters” do WordPress está disponível em Adam Brown’s WP Hooks Database.
As
listas oficionais para as Actions e Filters são respectivamente
http://codex.wordpress.org/Plugin_API/Action_Reference e
http://codex.wordpress.org/Plugin_API/Filter_Reference
Como dito anteriormente, há dois tipos de “hooks” (ganchos), vamos conhecê-los:
Actions (Ações)
Seu
plugin pode executar uma ou várias funções em momentos específicos em
que o WordPress executa determinados códigos ou quando algum evento
ocorre.
As Actions permitem que você altere o funcionamento do
WordPress ou responda a certos eventos sem editar o código fonte do
sistema.
Imagine a cena: você edita o código padrão do
WordPress. Certamente você irá atualizá-lo quando lançarem novas
versões. Logo, sua modificação foi sobrescrita, perdida. Com os plugins
isso não ocorre e é mais elegante.
Um exemplo claro de uso das
Actions é postar um Tweet quando um post for publicado. Isto é, criamos
uma função e vinculamos ela ao evento “publicar post”. Respondemos a um
evento (publicar post) do WordPress com uma função com determinado
objetivo (postar um tweet).
Filters (filtros)
Textos e
imagens, por exemplo, são constantemente adicionados ao banco de dados
ou enviados para a tela do navegador de internet. Seu plugin pode
executar uma ou várias funções para modificar esses conteúdos.
Suas
funções receberão dados sem modificações ou não, dependendo se outro
plugin já tiver filtrado tais dados, e retornará os dados com as
modificações desejadas. Há dois pontos a serem considerados: em alguns
casos, sua função poderá retornar “null” (vazio) indicando que o dado
foi excluído ou desconsiderado. Outro ponto é retornar o dado bruto
caso sua função não o modifique para que outro plugin o receba e faça o
que tiver de ser feito.
“Actions” (Ações)
Falamos anteriormente que através das
Actions podemos responder um evento do WordPress executando uma função
ou então executá-la em determinados pontos em que os códigos do
WordPress são executados.
Veremos agora como funciona esse
mecanismo, isto é, como registrar uma função em nosso plugin para esse
propósito. Os passos são simples:
- No arquivo do plugin crie uma função que será executada junto a algum evento do WordPress;
- Registre sua função em algum Hook do tipo Actions utilizando a função add_action();
- Ative o plugin.
Observe um exemplo prático.
Arquivo:
nome-do-arquivo-do-plugin-actions.php
Armazenado em:
/wp-content/plugins/
<?php
/*
Plugin Name: Nome do plugin
Plugin URI: http://...
Description: O que plugin faz.
Author: Leandro Vieira Pinho
Version: 1.0
Author URI: http://leandrovieira.com/
*/
function imasters_pro_url_after_login()
{
global $redirect_to;
if ( !isset( $_GET['redirect_to'] ) )
$redirect_to = 'http://pro.imasters.com.br/treinamentos/';
}
add_action( 'login_form', 'imasters_pro_url_after_login' );
?>
O arquivo acima é um plugin WordPress. Sim, com poucas linhas e super simples. É muito fácil mesmo.
No
exemplo acima criamos um plugin para responder um evento do WordPress,
neste caso, o momento em que o formulário de login é manipulado. A
intenção é definir um valor para a variável $redirect_to, caso não
exista o parâmetro de URL redirect_to. Essa variável armazena uma URL
utilizada para redirecionar o usuário após sua autenticação.
A
função add_action(), utilizada para registrar uma função aos hooks do
WordPress, aceita quatro parâmetros sendo dois requeridos e dois
opcionais. Veja:
add_action ( 'nome_gancho', 'nome_funcao', [prioridade], [parâmetros aceitos] );
nome_gancho
O nome do gancho, do tipo Action, disponibilizado pelo WordPress que associa o evento desejado à sua função.
nome_funcao
Nome
da função que será executada em associação ao nome do gancho informado.
Essa função pode ser padrão do PHP, nativa do WordPress ou criada por
você mesmo. Em nosso exemplo acima, criamos uma função chamada imasters_pro_url_after_login.
prioridade
Esse
parâmetro é opcional. Define a ordem de prioridade em que a função deve
ser executada. Esse parâmetro deve ser um valor inteiro (um número); o
padrão é 10. Funções com o mesmo valor de prioridade serão executadas
na ordem que foram adicionadas à Action.
parâmetros aceitos
Esse
parâmetro é opcional. Define quantos parâmetros sua função aceitará.
Esse parâmetro deve ser um valor inteiro (um número); o padrão é 1.
Esse parâmetro é utilizado junto a alguns ganchos uma vez que eles
passam mais de um parâmetro.
Como percebemos neste artigo, criar um plugin para WordPress é simples e muito fácil a partir do momento em que você conhece a estrutura da API do WordPress, a forma como ele lida com os plugins e algumas outras particularidades. No treinamento Desenvolvimento de Plugins e Temas para WordPress vamos conhecer toda lógica, melhores práticas e criaremos plugins a partir do zero.