{"id":325,"date":"2026-05-13T08:00:30","date_gmt":"2026-05-13T11:00:30","guid":{"rendered":"http:\/\/neodoor.neo\/?p=1"},"modified":"2026-05-19T17:55:42","modified_gmt":"2026-05-19T20:55:42","slug":"autoloader","status":"publish","type":"post","link":"https:\/\/www.portanova.com.br\/notebook\/autoloader\/","title":{"rendered":"[MU] Autoloader para Must-Use Plugins"},"content":{"rendered":"<h2>Aula: Autoloader para Must-Use Plugins (loader.php)<\/h2>\n<p><strong>Objetivo:<\/strong> Criar um carregador autom\u00e1tico (autoloader) que permite organizar cada funcionalidade em uma pasta separada dentro de <code>\/wp-content\/mu-plugins\/<\/code>, sem precisar de plugins tradicionais.<\/p>\n<p><strong>Contexto:<\/strong> Por padr\u00e3o, o WordPress s\u00f3 carrega arquivos <code>.php<\/code> diretamente na raiz da pasta <code>mu-plugins\/<\/code>. Com o loader, podemos criar subpastas (ex: <code>neodoor-disable-gutenberg\/<\/code>) e ter um arquivo principal com mesmo nome da pasta. O loader inclui automaticamente todos esses arquivos.<\/p>\n<h3>Arquivo: loader.php<\/h3>\n<p>Crie o arquivo <code>wp-content\/mu-plugins\/loader.php<\/code> com o conte\u00fado abaixo:<\/p>\n<pre><code>&lt;?php\n\/**\n * Plugin Name:  Neodoor Custom MU-Plugins Loader\n * Description:  Carrega automaticamente todos os mu-plugins organizados em subpastas.\n * Version:      1.0\n * Author:       Reinaldo (Neodoor.neo)\n *\/\n\nif ( ! defined( 'ABSPATH' ) ) {\n    exit; \/\/ Sa\u00edda direta se acesso direto\n}\n\n\/\/ Define o caminho absoluto para a pasta de mu-plugins\n$mu_plugins_path = WPMU_PLUGIN_DIR;\n\n\/\/ Pega todos os itens da pasta (pastas e arquivos)\n$items = scandir( $mu_plugins_path );\n\nforeach ( $items as $item ) {\n    \/\/ Ignora entradas especiais do sistema de arquivos\n    if ( $item === '.' || $item === '..' ) {\n        continue;\n    }\n\n    $item_path = $mu_plugins_path . '\/' . $item;\n\n    \/\/ Se o item for uma PASTA, procura por um arquivo PHP com o mesmo nome da pasta\n    if ( is_dir( $item_path ) ) {\n        $main_file = $item_path . '\/' . $item . '.php';\n        if ( file_exists( $main_file ) ) {\n            include_once $main_file;\n        }\n    }\n    \/\/ Se o item for um ARQUIVO .php, inclui ele diretamente (exceto o pr\u00f3prio loader)\n    elseif ( is_file( $item_path ) &amp;&amp; pathinfo( $item_path, PATHINFO_EXTENSION ) === 'php' &amp;&amp; $item !== 'loader.php' ) {\n        include_once $item_path;\n    }\n}\n<\/code><\/pre>\n<h3>Instru\u00e7\u00f5es de instala\u00e7\u00e3o<\/h3>\n<ol>\n<li>Acesse via FTP ou cPanel o diret\u00f3rio <code>\/wp-content\/mu-plugins\/<\/code> do seu site local (neodoor.neo).<\/li>\n<li>Se a pasta <code>mu-plugins<\/code> n\u00e3o existir, crie-a.<\/li>\n<li>Dentro dela, crie o arquivo <code>loader.php<\/code> e cole o c\u00f3digo acima.<\/li>\n<li>N\u00e3o \u00e9 necess\u00e1rio ativar nada \u2013 o WordPress carrega automaticamente qualquer arquivo dentro de <code>mu-plugins\/<\/code>.<\/li>\n<\/ol>\n<h3>Como organizar seus pr\u00f3prios MU-Plugins<\/h3>\n<p>A partir de agora, para cada nova funcionalidade, siga este padr\u00e3o:<\/p>\n<pre><code>mu-plugins\/\n\u251c\u2500\u2500 loader.php\n\u251c\u2500\u2500 neodoor-disable-gutenberg\/\n\u2502   \u2514\u2500\u2500 neodoor-disable-gutenberg.php\n\u251c\u2500\u2500 neodoor-admin-slug-column\/\n\u2502   \u2514\u2500\u2500 neodoor-admin-slug-column.php\n\u2514\u2500\u2500 neodoor-disable-rightclick\/\n    \u2514\u2500\u2500 neodoor-disable-rightclick.php\n<\/code><\/pre>\n<p>Cada arquivo <code>nome-da-pasta.php<\/code> dentro da pasta deve ter o cabe\u00e7alho de plugin PHP (com <code>Plugin Name:<\/code>, etc.) e sua l\u00f3gica. O loader incluir\u00e1 todos automaticamente.<\/p>\n<h3>Teste<\/h3>\n<p>Ap\u00f3s criar o <code>loader.php<\/code>, crie um MU-Plugin simples de teste, por exemplo, <code>mu-plugins\/teste\/teste.php<\/code> com o conte\u00fado:<\/p>\n<pre><code>&lt;?php\n\/**\n * Plugin Name:  Teste Autoloader\n *\/\nadd_action( 'admin_notices', function() {\n    echo '&lt;div class=\"notice notice-success\"&gt;&lt;p&gt;Loader funcionando!&lt;\/p&gt;&lt;\/div&gt;';\n} );\n<\/code><\/pre>\n<p>Recarregue o admin do WordPress. Voc\u00ea deve ver um aviso de sucesso. Depois remova o plugin de teste.<\/p>\n<h3>Observa\u00e7\u00f5es<\/h3>\n<ul>\n<li><strong>Vantagens:<\/strong> Organiza\u00e7\u00e3o, performance (c\u00f3digo sempre carregado), sem necessidade de ativa\u00e7\u00e3o.<\/li>\n<li><strong>Cuidado:<\/strong> Se um MU-Plugin tiver erro de sintaxe, todo o site pode ficar inacess\u00edvel. Sempre teste em ambiente local primeiro (nosso caso).<\/li>\n<li><strong>Compatibilidade:<\/strong> Funciona com qualquer vers\u00e3o do WordPress a partir da 5.0.<\/li>\n<\/ul>\n<h3>Registro no caderno<\/h3>\n<p>Data: <\/p>\n<p>Funcionalidade: Autoloader para MU-Plugins<\/p>\n<p>Plugins substitu\u00eddos: Nenhum, \u00e9 infraestrutura.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aula: Autoloader para Must-Use Plugins (loader.php) Objetivo: Criar um carregador autom\u00e1tico (autoloader) que permite organizar cada funcionalidade em uma pasta separada dentro de \/wp-content\/mu-plugins\/, sem precisar de plugins tradicionais. Contexto: Por padr\u00e3o, o WordPress s\u00f3 carrega arquivos .php diretamente na raiz da pasta mu-plugins\/. Com o loader, podemos criar subpastas (ex: neodoor-disable-gutenberg\/) e ter um [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,4],"tags":[],"class_list":["post-325","post","type-post","status-publish","format-standard","hentry","category-lessons","category-pluginsmu"],"_links":{"self":[{"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/posts\/325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/comments?post=325"}],"version-history":[{"count":0,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/posts\/325\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/media?parent=325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/categories?post=325"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/tags?post=325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}