WordPress Plugins

Conheça o tipo de plugin Must-use do WordPress

Você sabia que o WordPress possui um tipo especial de plugin usado quando as funções dele são essenciais para o projeto e que não pode ser desabilitado via web e nem mesmo pelo usuário administrador? Conheça os mu-plugins, suas vantagens e desvantagens.

Motivação do uso

Se você utiliza o WordPress para desenvolver diferentes tipos de projetos, com certeza já se deparou com alguma funcionalidade específica e que não pode ser encontrada exatamente do modo que você precisa em nenhum dos milhares de plugins existentes.

Muitas vezes quando precisamos criar um plugin específico para um projeto, quando as funções dele são essenciais para o funcionamento da aplicação, então surge aquela dúvida: criar um plugin para realizar essas funções ou colocar dentro do tema, já que ele estará sempre ativo. Exatamente nesse ponto surgem os mu-plugins, o principal objetivo deles é garantir que nenhum usuário conseguirá desativá-los, uma vez que as funções são imprescindíveis para o projeto. Esses plugins geralmente possuem uma questão de dependência, como se eles fizessem parte do core do WordPress do ponto de vista da aplicação, uma vez que o projeto não terá todas as funções necessárias sem ele.

No parágrafo acima dei como exemplo o plugin que é criado para um projeto específico mas, na verdade, qualquer plugin WordPress pode ser instalado como mu-plugin, desde de que obedeça algumas regras técnicas e que seja de total importância para o projeto de modo que não possa ser desativado ou deletado.

História

Inicialmente o conceito de mu-plugin foi criado para utilização em instalações WordPress WPMU (Multi-User), um tipo de instalação que possuía facilidades para o administrador gerir vários sites WordPress. O objetivo desse tipo de plugin era permitir ao administrador instalar um plugin que ficasse sempre ativo em todos os sites da árvore de administração. Nessa época o WordPress ainda não possuía no admin uma seção para administrar os plugins das demais instalações como existe hoje em instalações WordPress Multisite Network.

Após a versão 2.8 o recurso de mu-plugin foi implementado em todos os tipos de instalações do WordPress, seja multisite ou não. Com essa interpretação as letras MU de multisite passaram a significar Must-Use e a pergunta para seu uso passou de “Esse plugin deve ser ativo em todas as minhas instalações?” para “Esse plugin é tão essencial ao ponto de ser considerado uma extensão do WordPress para meu projeto?”.

Características técnicas

Existem algumas características técnicas que devemos considerar ao instalar um plugin como must-use:

  • Instalação – A instalação e remoção do plugin deve ser feita diretamente no sistema de arquivos, não é possível fazer via gerenciador web;
  • Carregamento – O WordPress carrega esses plugins antes dos convencionais, isso significa que os hooks criados dentro deles podem ser usados nos demais plugins. O carregamento entre os mu-plugins é feito através de ordem alfabética;
  • Atualização – Diferente dos plugins convencionais, as atualizações desse tipo de plugin não são exibidas no admin, elas devem sempre ser verificadas pelo administrador;
  • Hooks de ativação – Muitos plugins executam códigos ao ativá-lo ou desativá-lo. Como os mu-plugins não são ativados e desativados, esses ganchos não são executados. Sempre se atente a esse detalhe ao escolher um plugin de terceiro para usar nessa categoria ou no desenvolvimento do seu próprio plugin.

Diferenças dos plugins comuns

Além das questões já levantadas acima, os mu-plugins não possuem muitas diferenças dos plugins normais do WordPress. Toda a parte de declaração dos metadados é feita da mesma forma, a utilização das APIs do WordPress também podem ser usadas de modo normal, só tomando cuidado para não utilizar os ganchos de ativação do plugin.

Uma diferença importante está na pasta de instalação dos mu-plugins. Diferente dos plugins comuns que são instalados dentro da pasta wp-content/plugins os mu-plugins devem ser instados dentro da pasta wp-content/mu-plugins, pasta essa que deve ser criada, pois não existe por padrão no WordPress. Além disso os mu-plugins só são reconhecidos se o arquivo principal do plugin com os metadados for colocado dentro da pasta mu-plugins, se colocados em subpastas não são reconhecidos. No final desse artigo veremos como contornar esse comportamento.

Testando mu-plugins

Vamos ver na prática como criar um mu-plugin básico, instalar no WordPress e ver como se comporta?

Acesse a pasta wp-content de uma instalação de teste do WordPress e crie a pasta mu-plugins:

Imagem pasta mu-plugins WordPress

Dentro dessa pasta crie um arquivo com nome de treinaweb.php e insira o seguinte código:

<?php
/*
Plugin Name: Treinaweb mu-plugin
Description: Plugin de teste criado no artigo sobre mu-plugins do Treinaweb
Version:     0.0.1
Plugin URI:  https://treinaweb.com.br/blog
Author:      Treinaweb Cursos
Author URI:  https://treinaweb.com.br

Copyright 2017 Treinaweb

*/

add_action('wp_footer', function(){
    echo "<h1>Impresso no mu-plugin</h1>";
});

Acesse a página de administração de plugins do WordPress e veja que ele mostra um filtro com nome indispensável, onde lista nosso plugin:

must-use plugin no painel do WordPress

Com isso já temos nosso plugin ativo. Acesse as páginas do site e veja no rodapé a mensagem que adicionamos dentro do plugin:

mu-plugin funcionando

Carregando mu-plugins dentro de subpastas

Conforme já explicado, o WordPress só encontra os mu-plugins dentro da pasta principal dele, mas existe a possibilidade de criar proxies para carregamento dos plugins dentro de subpastas. Veja no vídeo de dica abaixo como isso é possível:

Conclusão

Os mu-plugins são uma ótima opção para o carregamento de plugins essenciais para o projeto, mas devem ser usados com cuidado, não substituindo o gerenciamento de plugins convencional do WordPress. Deve-se analisar a real necessidade de instalar um plugin nesse modo. Lembrando também que a atualização desse tipo de plugin deverá sempre ser feita de forma manual e que não podem ser usados neles os ganchos de ativação e desativação.

JUNTE-SE A MAIS DE 150.000 PROGRAMADORES