[MU] Autoloader para Must-Use Plugins

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

  1. Acesse via FTP ou cPanel o diretório /wp-content/mu-plugins/ do seu site local (neodoor.neo).
  2. Se a pasta mu-plugins não existir, crie-a.
  3. Dentro dela, crie o arquivo loader.php e cole o código acima.
  4. 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.

Média: 3.1 (40 votos)