{"id":228,"date":"2026-05-13T07:00:07","date_gmt":"2026-05-13T10:00:07","guid":{"rendered":"http:\/\/neodoor.neo\/?p=228"},"modified":"2026-05-21T09:01:58","modified_gmt":"2026-05-21T12:01:58","slug":"admin-slug-column","status":"publish","type":"post","link":"https:\/\/www.portanova.com.br\/notebook\/admin-slug-column\/","title":{"rendered":"[MU] Admin Slug Column"},"content":{"rendered":"<h2>Aula: Adicionando a coluna &#8220;Slug&#8221; na lista de posts (substituindo o plugin Admin Slug Column)<\/h2>\n<p><strong>Objetivo:<\/strong> Substituir o plugin <code>admin-slug-column<\/code> por um c\u00f3digo enxuto em MU-Plugin, ganhando performance e controle.<\/p>\n<p><strong>Contexto:<\/strong> O plugin original adiciona uma coluna na administra\u00e7\u00e3o de posts\/p\u00e1ginas mostrando o slug (nome amig\u00e1vel) de cada item. Vamos recriar essa funcionalidade com poucas linhas de PHP.<\/p>\n<h3>C\u00f3digo do MU-Plugin<\/h3>\n<p>Crie o arquivo <code>wp-content\/mu-plugins\/neodoor-admin-slug-column\/<strong>neodoor-admin-slug-column.php<\/strong><\/code> com o conte\u00fado abaixo:<\/p>\n<pre><code>&lt;?php\n\/**\n * Plugin Name:  Neodoor Admin Slug Column\n * Description:  Adiciona coluna \"Slug\" nas listas de posts, p\u00e1ginas e CPTs.\n * Version:      1.0\n * Author:       Reinaldo (Neodoor.neo)\n *\/\n\nif ( ! defined( 'ABSPATH' ) ) {\n    exit;\n}\n\nclass Neodoor_Admin_Slug_Column {\n\n    private static $instance = null;\n\n    public static function get_instance() {\n        if ( null === self::$instance ) {\n            self::$instance = new self();\n        }\n        return self::$instance;\n    }\n\n    private function __construct() {\n        add_filter( 'manage_posts_columns', [ $this, 'add_slug_column' ], 10, 1 );\n        add_filter( 'manage_pages_columns', [ $this, 'add_slug_column' ], 10, 1 );\n        add_action( 'manage_posts_custom_column', [ $this, 'render_slug_column' ], 10, 2 );\n        add_action( 'manage_pages_custom_column', [ $this, 'render_slug_column' ], 10, 2 );\n        \/\/ Para CPTs gen\u00e9ricos\n        add_filter( 'manage_edit-post_columns', [ $this, 'add_slug_column' ] );\n    }\n\n    public function add_slug_column( $columns ) {\n        $columns['slug'] = 'Slug';\n        return $columns;\n    }\n\n    public function render_slug_column( $column_name, $post_id ) {\n        if ( 'slug' === $column_name ) {\n            $slug = get_post_field( 'post_name', $post_id );\n            echo esc_html( $slug );\n        }\n    }\n}\n\nNeodoor_Admin_Slug_Column::get_instance();\n<\/code><\/pre>\n<h3>Instru\u00e7\u00f5es de instala\u00e7\u00e3o<\/h3>\n<ol>\n<li>Certifique-se de que o autoloader <code>loader.php<\/code> esteja presente em <code>\/mu-plugins\/<\/code> (conforme aula anterior).<\/li>\n<li>Crie a pasta <code>neodoor-admin-slug-column<\/code> dentro de <code>\/mu-plugins\/<\/code>.<\/li>\n<li>Dentro dela, crie o arquivo <code>neodoor-admin-slug-column.php<\/code> e cole o c\u00f3digo acima.<\/li>\n<li>N\u00e3o \u00e9 necess\u00e1rio ativar nada \u2013 MU-Plugins carregam automaticamente.<\/li>\n<li>Desative e remova o plugin original <code>admin-slug-column<\/code> da lista de plugins.<\/li>\n<\/ol>\n<h3>Teste<\/h3>\n<p>Acesse <strong>Posts &gt; Todos os posts<\/strong> ou <strong>P\u00e1ginas &gt; Todas as p\u00e1ginas<\/strong>. Voc\u00ea ver\u00e1 uma nova coluna chamada &#8220;Slug&#8221; exibindo o slug de cada item.<\/p>\n<p><strong>Observa\u00e7\u00e3o:<\/strong> O slug \u00e9 o nome amig\u00e1vel que aparece na URL (ex: <code>\/meu-post\/<\/code>).<\/p>\n<h3>Registro no caderno<\/h3>\n<p>Data: <!--?php echo date('d\/m\/Y'); ?--><\/p>\n<p>Plugins substitu\u00eddos: admin-slug-column<\/p>\n<p>Compatibilidade: PHP 8.4 testado com sucesso.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aula: Adicionando a coluna &#8220;Slug&#8221; na lista de posts (substituindo o plugin Admin Slug Column) Objetivo: Substituir o plugin admin-slug-column por um c\u00f3digo enxuto em MU-Plugin, ganhando performance e controle. Contexto: O plugin original adiciona uma coluna na administra\u00e7\u00e3o de posts\/p\u00e1ginas mostrando o slug (nome amig\u00e1vel) de cada item. Vamos recriar essa funcionalidade com poucas [&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-228","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\/228","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=228"}],"version-history":[{"count":0,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/posts\/228\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/media?parent=228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/categories?post=228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/tags?post=228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}