Aula: Autoloader para Must-Use Plugins (loader.php)
Objetivo: Criar um carregador automático (autoloader) que permite organizar cada funcionalidade em uma pasta separada dentro de /wp-content/mu-plugins/, sem precisar de plugins tradicionais.
Contexto: Por padrão, o WordPress só carrega arquivos .php diretamente na raiz da pasta mu-plugins/. Com o loader, podemos criar subpastas (ex: neodoor-disable-gutenberg/) e ter um arquivo principal com mesmo nome da pasta. O loader inclui automaticamente todos esses arquivos.
Arquivo: loader.php
Crie o arquivo wp-content/mu-plugins/loader.php com o conteúdo abaixo:
<?php
/**
* Plugin Name: Neodoor Custom MU-Plugins Loader
* Description: Carrega automaticamente todos os mu-plugins organizados em subpastas.
* Version: 1.0
* Author: Reinaldo (Neodoor.neo)
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Saída direta se acesso direto
}
// Define o caminho absoluto para a pasta de mu-plugins
$mu_plugins_path = WPMU_PLUGIN_DIR;
// Pega todos os itens da pasta (pastas e arquivos)
$items = scandir( $mu_plugins_path );
foreach ( $items as $item ) {
// Ignora entradas especiais do sistema de arquivos
if ( $item === '.' || $item === '..' ) {
continue;
}
$item_path = $mu_plugins_path . '/' . $item;
// Se o item for uma PASTA, procura por um arquivo PHP com o mesmo nome da pasta
if ( is_dir( $item_path ) ) {
$main_file = $item_path . '/' . $item . '.php';
if ( file_exists( $main_file ) ) {
include_once $main_file;
}
}
// Se o item for um ARQUIVO .php, inclui ele diretamente (exceto o próprio loader)
elseif ( is_file( $item_path ) && pathinfo( $item_path, PATHINFO_EXTENSION ) === 'php' && $item !== 'loader.php' ) {
include_once $item_path;
}
}
Instruções de instalação
- Acesse via FTP ou cPanel o diretório
/wp-content/mu-plugins/do seu site local (neodoor.neo). - Se a pasta
mu-pluginsnão existir, crie-a. - Dentro dela, crie o arquivo
loader.phpe cole o código acima. - Não é necessário ativar nada – o WordPress carrega automaticamente qualquer arquivo dentro de
mu-plugins/.
Como organizar seus próprios MU-Plugins
A partir de agora, para cada nova funcionalidade, siga este padrão:
mu-plugins/
├── loader.php
├── neodoor-disable-gutenberg/
│ └── neodoor-disable-gutenberg.php
├── neodoor-admin-slug-column/
│ └── neodoor-admin-slug-column.php
└── neodoor-disable-rightclick/
└── neodoor-disable-rightclick.php
Cada arquivo nome-da-pasta.php dentro da pasta deve ter o cabeçalho de plugin PHP (com Plugin Name:, etc.) e sua lógica. O loader incluirá todos automaticamente.
Teste
Após criar o loader.php, crie um MU-Plugin simples de teste, por exemplo, mu-plugins/teste/teste.php com o conteúdo:
<?php
/**
* Plugin Name: Teste Autoloader
*/
add_action( 'admin_notices', function() {
echo '<div class="notice notice-success"><p>Loader funcionando!</p></div>';
} );
Recarregue o admin do WordPress. Você deve ver um aviso de sucesso. Depois remova o plugin de teste.
Observações
- Vantagens: Organização, performance (código sempre carregado), sem necessidade de ativação.
- Cuidado: Se um MU-Plugin tiver erro de sintaxe, todo o site pode ficar inacessível. Sempre teste em ambiente local primeiro (nosso caso).
- Compatibilidade: Funciona com qualquer versão do WordPress a partir da 5.0.
Registro no caderno
Data:
Funcionalidade: Autoloader para MU-Plugins
Plugins substituídos: Nenhum, é infraestrutura.