Como Criar Plugins para WordPress — Parte 2

Esse texto faz parte de um guia dividido em duas postagens. Caso você não tenha lido a parte um, recomendo que faça isso antes de prosseguir com a leitura deste artigo. Acesse a primeira parte clicando aqui.

Enfim, chegamos na parte prática do nosso guia. Como já foi dito, iremos criar um plugin que gera shortcodes que podem ser utilizados para listar as taxonomias de um site. É um plugin bem simples, mas também bem útil, pois você realmente poderá reaproveitá-lo em seus projetos e ele já servirá como base para o entendimento de como se estrutura e como funciona um plugin.

Vou considerar que você já leu a Parte 1 deste guia e já está familiarizado com os conceitos que expliquei lá.

Criando o Plugin

A primeira coisa que iremos fazer é criar uma pasta dentro do diretório plugins. Nomearemos essa pasta como wp-lista-taxonomias. Dentro desta pasta, criaremos um arquivo nomeado index.php.

Agora, uma medida de segurança aqui. No topo deste documento, declare:

defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

Isso bloqueia acesso direto a este arquivo PHP. O aconselhável é você declarar isso no topo de todos os seus arquivos presentes no plugin. Agora, continuando, abra uma tag de comentário e escreva o que está abaixo:

/*
* Plugin name: WP Lista Taxonomias
* Description: Apenas um plugin para gerar listas de taxonomias.
* Version: 1.0
* Author: Seu Nome
*/

Com isso feito, salve o arquivo e acesse o seu painel do WordPress. Vá em plugins e… Voilà! O plugin que você começou a construir já aparece no painel de controle dos plugins instalados. Essas quatro linhas de comentários definem as informações básicas do seu plugin.

A estrutura mínima do seu plugin está pronta, você até já pode ativá-lo, se quiser. Mas, obviamente, o seu plugin ainda não faz nada além de aparecer na lista de plugins instalados. Vamos falar agora sobre a organização de arquivos.

A Organização dos Arquivos

Um método bem efetivo de se resolver um problema é dividindo-o em módulos. Não apenas na criação de plugins, mas no desenvolvimento em geral, a melhor maneira de você solucionar uma situação é separando e organizando as partes referentes ao todo. Desta maneira, é possível focar numa solução de cada vez e nunca se perder ao realizar uma futura manutenção no seu código.

Seguindo este princípio, há diversas maneiras de se organizar durante o processo de criação do plugin. Eu possuo o costume de dividir o plugin em módulos, nos quais cada arquivo é responsável por uma parte específica do funcionamento da aplicação. Desta maneira, criaremos mais dois arquivos na pasta do nosso plugin, que serão:

settings.php - Local no qual deixaremos códigos que serão utilizados para o funcionamento geral do plugin. É basicamente um arquivo de configurações.

functions.php - Local onde serão armazenados os códigos responsáveis pelo funcionamento específico do plugin. É aqui que ficará a alma da sua aplicação.

Agora, voltando ao arquivo index.php, acrescente as seguintes linhas:

require dirname(__FILE__).'/settings.php';
require dirname(__FILE__).'/functions.php';

Outra coisa que você deve prestar bastante atenção é nas requisições que você faz em seu plugin. O endereçamento de diretórios deve ser planejado de modo que o seu plugin funcione em qualquer ambiente, independente de em qual instalação ele está rodando.

Caso tenha alguma dúvida quanto ao funcionamento da função dirname, olhe a documentação do PHP.

O Nosso Arquivo settings.php

Por padrão, as versões atuais do WordPress já trazem a funcionalidade responsável por compilar shortcodes em widgets habilitada. Porém, apenas para garantir o máximo de funcionalidade, pois dependendo da versão do WordPress na qual este plugin será instalado ou do tema que o CMS pode estar usando há uma pequena possibilidade dos shortcodes não funcionarem nos widgets, vamos adicionar a seguinte função ao nosso arquivo settings.php:

add_filter('widget_text', 'do_shortcode');

Isso é tudo que faremos em nosso arquivo settings.php. Pode salvá-lo e fechá-lo.

Hooks, Actions e Filters

Lembra dos hooks, que citei na Parte 1 deste guia? Então, vamos falar um pouquinho sobre eles.

O WordPress possui uma API de hooks, também conhecida como filters e actions. Estes hooks nada mais são do que um conjunto de funções que lhe permitem modificar funções já existentes no WordPress ou acrescentar novas funcionalidades ao CMS. Os hooks não são usados exclusivamente por plugins, podendo ser implementados dentro do seu próprio tema, sempre que você tiver essa necessidade.

Podemos dividir os hooks em dois grupos:

actions - São funções PHP executadas em pontos específicos do core do WordPress.

filters - É uma função que está associada à uma action existente, fazendo referência a algum hook já predefinido.

No código acima, fizemos uso de um filter para modificar o modo como o WordPress gera os widgets, acrescentando a possibilidade de leitura de shortcodes. Como dito na Parte 1 deste guia, faremos uso frequente de hooks, pois normalmente estaremos desenvolvendo plugins que necessitam modificar ou acrescentar algo ao comportamento do WordPress. Existe uma variedade de hooks e não irei focar este guia na explicação do que cada hook faz. Porém, caso você tenha alguma dúvida quanto a funcionalidade de qualquer hook, visite a parte da documentação relativa a API.

Nosso arquivo functions.php

Finalmente, chegamos em nossa principal função. Vamos escrever agora a parte responsável pelo funcionamento do plugin, de fato. No seu arquivo functions.php, adicione as seguintes funções:

function categories_list($atts){
extract(shortcode_atts(array("taxonomy" => "", "title_li" => "", "show_count" => "", "orderby" => ""), $atts));
  $show_count = isset($show_count) ? $show_count : 0;
$title_li = isset($title_li) ? $title_li : "";
$orderby = isset($orderby) ? $orderby : "name";
  $args = array(
'hide_empty' => 1,
'hierarchical' => true,
'order' => 'ASC',
'orderby' => $orderby,
'show_count' => $show_count,
'style' => 'list',
'taxonomy' => $taxonomy,
'title_li' => __($title_li),
);
  echo '<ul>';
echo wp_list_categories($args);
echo '</ul>';
}
add_shortcode('lista_taxonomies', 'categories_list');

A função categories_list gera uma lista de categorias baseada numa taxonomia que é passada como parâmetro através do shortcode. Se você está acostumado com PHP, não há muito mistério no que está escrito aí. Todas as funções utilizadas dentro dela são padrões do WordPress. Caso tenha alguma dúvida, pesquise por elas na documentação.

A única ressalva que acho válido destacar é a função extract. É com ela que conseguimos extrair parâmetros do nosso shortcode.

Abaixo da função categories_list, temos mais um hook, a função add_shortcode. Esta função é responsável por criar o shortcode, que nada mais é do que uma tag utilizada para executar funções dentro do conteúdo presente no WordPress.

As funções acima gerarão o seguinte shortcode, que aceita quatro parâmetros, sendo apenas um deles (“taxonomy”) obrigatório:

[lista_taxonomies taxonomy="nome_da_taxonomia" title_li="titulo_da_lista" show_count="0_ou_1" orderby=""]

Nosso plugin está praticamente pronto. Resta-nos apenas testá-lo.

Considerações Finais

Se você ativar nosso plugin WP Lista Taxonomias em seu painel, poderá fazer uso do shortcode em qualquer parte do seu tema. Fiz uso apenas de requisitos básicos para gerar um shortcode que pudesse funcionar com base na passagem de parâmetros.

Te aconselho a revisar toda a estrutura do plugin e, agora, tentar desenvolver o seu próprio. Afinal, é praticando que se aprende :)

Se tudo estiver funcionando perfeitamente, basta zipar a pasta wp-lista-taxonomias e guardá-la onde bem desejar. Para reutilizar o plugin em outra instalação, é só extrair essa pasta para a pasta plugins, como vimos anteriormente, e ativá-lo no painel.

Bem, isso é tudo, pessoal. Espero que tenham gostado do guia e que ele realmente tenha sido útil pra você. Até a próxima!

Like what you read? Give Jhonatan Christian a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.