Aula: Adicionando a coluna “Slug” na lista de posts (substituindo o plugin Admin Slug Column)
Objetivo: Substituir o plugin admin-slug-column por um código enxuto em MU-Plugin, ganhando performance e controle.
Contexto: O plugin original adiciona uma coluna na administração de posts/páginas mostrando o slug (nome amigável) de cada item. Vamos recriar essa funcionalidade com poucas linhas de PHP.
Código do MU-Plugin
Crie o arquivo wp-content/mu-plugins/neodoor-admin-slug-column/neodoor-admin-slug-column.php com o conteúdo abaixo:
<?php
/**
* Plugin Name: Neodoor Admin Slug Column
* Description: Adiciona coluna "Slug" nas listas de posts, páginas e CPTs.
* Version: 1.0
* Author: Reinaldo (Neodoor.neo)
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class Neodoor_Admin_Slug_Column {
private static $instance = null;
public static function get_instance() {
if ( null === self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
private function __construct() {
add_filter( 'manage_posts_columns', [ $this, 'add_slug_column' ], 10, 1 );
add_filter( 'manage_pages_columns', [ $this, 'add_slug_column' ], 10, 1 );
add_action( 'manage_posts_custom_column', [ $this, 'render_slug_column' ], 10, 2 );
add_action( 'manage_pages_custom_column', [ $this, 'render_slug_column' ], 10, 2 );
// Para CPTs genéricos
add_filter( 'manage_edit-post_columns', [ $this, 'add_slug_column' ] );
}
public function add_slug_column( $columns ) {
$columns['slug'] = 'Slug';
return $columns;
}
public function render_slug_column( $column_name, $post_id ) {
if ( 'slug' === $column_name ) {
$slug = get_post_field( 'post_name', $post_id );
echo esc_html( $slug );
}
}
}
Neodoor_Admin_Slug_Column::get_instance();
Instruções de instalação
- Certifique-se de que o autoloader
loader.phpesteja presente em/mu-plugins/(conforme aula anterior). - Crie a pasta
neodoor-admin-slug-columndentro de/mu-plugins/. - Dentro dela, crie o arquivo
neodoor-admin-slug-column.phpe cole o código acima. - Não é necessário ativar nada – MU-Plugins carregam automaticamente.
- Desative e remova o plugin original
admin-slug-columnda lista de plugins.
Teste
Acesse Posts > Todos os posts ou Páginas > Todas as páginas. Você verá uma nova coluna chamada “Slug” exibindo o slug de cada item.
Observação: O slug é o nome amigável que aparece na URL (ex: /meu-post/).
Registro no caderno
Data:
Plugins substituídos: admin-slug-column
Compatibilidade: PHP 8.4 testado com sucesso.