Widgets do WordPress: Refatoração, Parte 5
No post anterior, criamos um Registro que será usado para armazenar todas as várias classes responsáveis por dar funcionalidade ao nosso widget.
Para fazer isso, haverá uma variedade de outras classes introduzidas, mas antes de ir para lá, precisamos adicionar o Registro ao bootstrap do plugin (quanto mais criar um bootstrap para o plugin).
Especificamente, aqui é onde paramos:
Como mencionado anteriormente no post, precisamos adicionar isso ao bootstrap do plugin. Para fazer isso, porém, precisamos definir nosso próprio filtro para que possamos passar facilmente o registro pelo resto do plugin (quando chegar a hora de fazer isso).
Então, neste post, vamos nos concentrar em fazer exatamente isso.
The WordPress Widget Boilerplate: Refatoração, Parte 5
Se você tem acompanhado a série até este ponto, então você deve estar em uma boa posição especificamente para adicionar o Registro para que tenhamos acesso a ele em todo o plugin.
Para fazer isso, porém, pressupõe-se que você saiba definir seus filtros. No WordPress, usamos ações e filtros o tempo todo.
A coisa sobre esses ganchos é que eles já estão definidos, no entanto. Então, como definimos nosso filtro?
Vamos dar uma olhada em fazer exatamente isso.
1 Definindo nosso filtro
Primeiramente, precisamos entender alguns conceitos:
- o que é um filtro,
- como adicionar um filtro,
- como introduzir nosso registro no filtro
- como recuperar a classe do filtro.
Felizmente, todos os itens acima são fáceis de explicar.
O que é um Filtro?
Simplificando, os ganchos nos permitem chamar o WordPress em momentos específicos durante a execução do programa. As ações geralmente são reservadas para o comportamento; Os filtros são reservados para dados.
Além disso, os filtros nos permitem trabalhar com dados específicos na aplicação – podem ser dados pré-existentes ou até mesmo dados novos. E no nosso caso, será a classe Registry que contém referências a outros dados.
Adicionando um filtro
Adicionar um filtro é fácil. Tem três partes para isso:
- chamando add_filter ,
- definir um identificador exclusivo para o filtro,
- passando informações para o filtro que podem ser retornadas sempre que forem chamadas.
Para nós, vou identificar nosso registro como o filtro wpWidgetRegistry. Observe, no entanto, que é importante que você escolha um nome exclusivo para sua implementação, pois se não o fizer, poderá acabar com colisões com outros dados se outro plug-in usar o mesmo identificado.
De qualquer forma, adicionar um filtro realiza uma tarefa simples:
Conecte uma função ou método a uma ação de filtro específica.
Isso significa que precisamos definir um método com nosso ID. Devido à natureza do PHP, não precisamos usar uma função separada.
Em vez disso, podemos usar uma função anônima.
Funções anônimas, também conhecidas como closures, permitem a criação de funções que não possuem nome especificado. Eles são mais úteis como o valor dos parâmetros de retorno de chamada, mas têm muitos outros usos.
A função anônima que vamos definir aceitará uma referência ao plugin como argumento e a retornará sempre que o filtro for chamado (o que será mostrado mais adiante neste artigo).
Passando informações para o nosso filtro
Agora que temos tudo isso coberto, podemos passar pelo processo de criação de uma instância do nosso Registro, definindo um filtro e, em seguida, adicionando o registro, para que fique acessível em todo o aplicativo.
Portanto, dentro do arquivo principal do plugin, que é o arquivo wordpress-widget-boilerplate.php, adicionamos as seguintes linhas de código :
<?php
namespace WordPressWidgetBoilerplate;
use WordPressWidgetBoilerplateUtilitiesRegistry;
// More to come...
O acima declara o namespace no qual o Registro reside. Em seguida, adicionamos o seguinte bloco de código abaixo do autoloader:
<?php
// Setup a filter so we can retrieve the registry throughout the plugin.
$registry = new Registry();
add_filter('wpWidgetRegistry', function() use ($registry) {
return $registry;
});
Observe que quando você pretende ativar o plug-in, ele não será ativado e gerará um erro. Isso é por causa da falta de um autoloader que será discutido no próximo post.
2 Recuperando Nosso Registro
Como o registro é definido no bootstrap do plugin e é feito através do uso de um filtro, podemos acessar o registro em qualquer lugar do nosso plugin chamando nosso filtro personalizado.
Por exemplo, digamos que estamos em outra classe e precisamos obter uma referência ao registro. Para fazer isso, podemos fazer esta chamada :
<?php
// Retrieve the registry anywhere in the plugin.
$registry = apply_filters('wpWidgetRegistry', null);
E é isso. Fácil, certo? Desde que tudo tenha sido devidamente adicionado ao registro – o que será abordado em breve – poderemos acessar todos eles através dos identificadores exclusivos que usamos no post anterior.
O carregador automático
Agora estamos começando a usar namespaces e outras classes. Isso significa que precisaremos usar carregadores automáticos.
Então, antes de começarmos a refatorar a classe inteira como ela está agora, vamos fazer um pequeno desvio em alguns dos recursos do Composer para ver como ele é usado para gerar um autoloader (além das coisas que já estamos usá-lo para lidar com a qualidade do nosso código-fonte).

