Neste post vamos entender um pouco melhor os diferentes tipos de plugins do WordPress: os normais, os must use e os drop-ins, conhecidos aqui no Brasil como plugins avançados. O conteúdo deste post está explicado no vídeo abaixo. Se você ainda não assinou o canal do YouTube, agora é uma boa hora 🙂

Os plugins “normais” do WordPress

Estes são aqueles plugins que baixamos no repositório do WP e colocamos na pasta wp-content/plugins. Podem ser só um arquivo php dentro dessa pasta, como o Hello Dolly, que é só o hello.php, ou uma pasta inteira com arquivos php dentro dela, como é a maioria dos plugins.

Esse arquivo colocado direto na pasta plugins ou algum dos arquivos dentro da pasta do plugin precisa ter um cabeçalho com alguns parâmetros. Esse cabeçalho é escrito em um comentário de PHP e você deve seguir a referência oficial.

<?php
/**
 * Plugin Name:       Nome do plugin
 * Plugin URI:        https://site-do-plugin/
 * Description:       Descrição do plugin
 * Version:           1.10.3 (versão do plugin)
 * Requires at least: 5.2 (versão mínima do WordPress necessária)
 * Requires PHP:      7.2 (versão mínima do PHP necessária)
 * Author:            Autor do plugin
 * Author URI:        https://site-do-autor/ (se vazio, o nome do autor fica sem link)
 * License:           GPL v2 or later (nome da licença)
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html (endereço da licença)
 * Text Domain:       slug-do-plugin (recomendo MUITO que seja idêntico ao slug do plugin)
 * Domain Path:       /languages (usado quando o plugin está desativado)
 * Network:           true (em multisite só pode ser ativado em toda a rede)
 */

Os parâmetros Text Domain e Domain Path estão explicados neste text sobre como funciona a tradução no WordPress.

Com o cabeçalho acima, o plugin seria exibido desta forma

Alguns plugins precisam de parâmetros adicionais para funcionar, como por exemplo o GitHub Updater. Este plugin serve para atualizar outros plugins e temas a partir de repositórios do GitHub (entre outros). Para que seja possível verificar atualizações, os plugins precisam incluir GitHub Plugin URI em seus cabeçalhos, como o autor explica na documentação oficial.

Plugins must use do WordPress

Estes plugins não podem ser desativados, ou seja, a partir do momento que você colocar o arquivo na pasta o plugin vai estar sempre habilitado. Por padrão, esses plugins ficam na pasta wp-content/mu-plugins e são carregados antes dos plugins normais.

Diferente do que acontece na pasta de plugins normais, os must use precisam estar na raiz da pasta mu-plugins, ou seja, não vai funcionar se você só colocar a pasta do seu plugin lá. Se você precisa de uma estrutura mais complexa, você deve criar um arquivo php simples na raiz da pasta e fazer o include para o arquivo principal do seu plugin:

<?php
/** Este arquivo serve somente para carregar o plugin que está em uma pasta. */
require 'pasta-do-plugin/arquivo-principal-do-plugin.php';

É importante lembrar também que não é possível atualizar os plugins must use pelo Painel e que eles não acionam os hooks de ativação e desativação, normalmente usados para criar tabelas personalizadas no banco de dados, por exemplo.

Ordem das actions acionadas no carregamento dos plugins

Se você precisa intervir em um momento específico do carregamento dos diferentes tipos de plugins, essa lista pode servir de referência:

  1. mu_plugin_loaded: Esta action é executada depois do carregamento de cada plugin must use. Passa o caminho do plugin como parâmetro.
  2. network_plugin_loaded: Executada depois do carregamento de cada plugin ativado na rede. Também passa o caminho do plugin como parâmetro.
  3. muplugins_loaded: Executada depois que todos os plugins must use e ativos na rede foram carregados.
  4. plugin_loaded: Executada depois do carregamento de cada plugin normal. Passa o caminho do plugin como parâmetro.
  5. plugins_loaded: Executada depois que todos os plugins foram carregados. Esta action pode (e deve) ser usada para testar se algum plugin específico existe e foi carregado.

Depois destas actions, o WordPress segue seu fluxo chamando after_setup_theme, init e wp_loaded.

Drop-ins ou plugins avançados

Estes plugins possuem nomes fixos e ficam sempre na pasta wp-content (não na plugins). A lista completa de plugins pode ser vista no código da função _get_dropins() e, com certeza, você já viu algum deles por aí, como, por exemplo, o advanced-cache.php. A lista completa na data que eu estou escrevendo este post é:

Drop-inDescrição
advanced-cache.phpPlugin de cache avançado
db.phpClasse do banco de dados personalizada
db-error.phpMensagem de erro de banco de dados personalizada
install.phpScript personalizado de instalação
maintenance.phpMensagem personalizada de manutenção
object-cache.phpCache de objeto externo
php-error.phpMensagem personalizada de erro do PHP
fatal-error-handler.phpManipulador personalizado de erro fatal do PHP
sunrise.php(Multisite) Executado antes do Multisite ser carregado
blog-deleted.php(Multisite) Mensagem de site excluído personalizada
blog-inactive.php(Multisite) Mensagem de site inativo personalizada
blog-suspended.php(Multisite) Mensagem de site suspenso personalizada

Alguns drop-ins sobrescrevem uma tela ou mensagem e outros estendem uma classe do WordPress. Para os que sobrescrevem uma tela ou exibem alguma mensagem é importante lembrar que talvez o seu tema não tenha sido carregado e, por isso, estas telas devem conter todo o CSS necessário para sua exibição.


Se este post foi útil não se esqueça de compartilhar e deixar um comentário aqui embaixo!