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.
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:
- mu_plugin_loaded: Esta action é executada depois do carregamento de cada plugin must use. Passa o caminho do plugin como parâmetro.
- network_plugin_loaded: Executada depois do carregamento de cada plugin ativado na rede. Também passa o caminho do plugin como parâmetro.
- muplugins_loaded: Executada depois que todos os plugins must use e ativos na rede foram carregados.
- plugin_loaded: Executada depois do carregamento de cada plugin normal. Passa o caminho do plugin como parâmetro.
- 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-in | Descrição |
---|---|
advanced-cache.php | Plugin de cache avançado |
db.php | Classe do banco de dados personalizada |
db-error.php | Mensagem de erro de banco de dados personalizada |
install.php | Script personalizado de instalação |
maintenance.php | Mensagem personalizada de manutenção |
object-cache.php | Cache de objeto externo |
php-error.php | Mensagem personalizada de erro do PHP |
fatal-error-handler.php | Manipulador 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.
Falei sobre o object-cache.php por aqui também.
Se este post foi útil não se esqueça de compartilhar e deixar um comentário aqui embaixo!