Título, fecha de publicación, nombre del autor, etiquetas son algunas de las columnas que vienen por defecto en el listado de las entradas, páginas o Custom Post Types, pero ¿Cómo podemos personalizar estas columnas para agregar o reordenar la información que realmente necesitamos?

Video Tutorial
Usando el plugin «Admin Columns»
En primer lugar vamos a personalizar las columnas de los listados utilizando el plugin «Admin Columns«. Este plugin nos permite incluir campos personalizados, imágenes destacadas, taxonomías personalizadas, cantidad de palabras, tiempo estimado de lectura, etc.

Una vez instalado y activado el plugin podemos acceder al panel de configuración del plugin en: Ajustes » Admin Columns.
¿Cómo agregar una nueva columna?
- En primer lugar seleccionamos el Custom Post Type del listado que queremos modificar (marcado con el número 1). Una vez seleccionado el CPT clickeamos en el boton «+ Adicionar Columna» (punto número 2).
- Tipo de columna: En la nueva columna debemos desplegar el campo «Tipo» para seleccionar entre todos los tipos de columnas disponibles. En la documentación del plugin puedes ver en detalle qué tipo de información muestra cada tipo de columna.
- Configuración: Según el tipo de columna que selecciones tendrás distintos campos de configuración que ajustar.

Orden de las columnas:
Podemos reordenar las columnas simplemente arrastrándolas hasta su nueva posición.

Resultado final:
Luego de configurar y guardar los campos con el botón «Actualizar» vamos a ver como luce nuestro nuevo listado de entradas.

Tipos de columnas:
El plugin nos permite seleccionar entre 90 tipos distintos de columnas. Menciono alguno de ellos para puedan hacerse una idea del potencial que tiene:
Nombre | Descripción | Configuración | Ejemplo |
Acciones: | Muestra los enlaces para editar, ver o borrar el post. | ![]() | |
Alias: | Muestra el slug del post. | ![]() | |
Cantidad de comentarios: | Muestra el número y el link para administrar todos los comentarios del post. | Estado del comentario: Se pueden filtrar según su estado (aprobado, pendiente, spam ,etc). | ![]() |
Content: | Muestra parte del contenido del post. | Tamaño de extracto: Nos permite seleccionar la cantidad de palabras a mostrar. | ![]() |
Conteo de palabras: | Muestra la cantidad de palabras que conforman nuestro post. | ![]() | |
Estimated Reading Time: | Muestra el tiempo que nos llevaría leer el artículo. | Words per minute: Podemos especificar qué cantidad de palabras podemos leer en un minuto para hacer el cálculo. | ![]() |
Featured image: | Muestra la imagen destacada del artículo. | Tamaño de vista previa: Se puede especificar el tamaño con el que se muestra la imagen destacada en la columna (miniatura, medio, largo, completo o personalizado). | ![]() |
Personalizando columnas por código
Los pasos para personalizar por código son los siguientes:
- Definir el nombre y el título de las cabeceras.
- Recorrer la definición anterior e ir completando con código cada columna.
Definición de nuevas columnas
Para definir las nuevas columnas utilizaremos el filtro manage_{$post_type}_posts_columns
donde debemos reemplazar la variable {$post_type}
por el nombre correspondiente al listado de nuestro Custom Post Type.
<?php
//Create new columns for the bonos Custom Post Type
function set_movies_posts_columns( $defaults ) {
$defaults = array();
$defaults['title'] = __('Nombre'); // Cambio el nombre de la columna Título
$defaults['genero'] = __('Género');
$defaults['duration'] = __('Duración');
$defaults['director'] = __('Director');
return $defaults;
}
add_filter('manage_movies_posts_columns', 'set_movies_posts_columns');
En el ejemplo anterior estamos asignando 4 columnas (nombre, género, duración y director) a un Custom Post Type llamado «Movies». Ahora debemos indicar por código qué valor tendrá cada columna.
¿Cómo agregar el valor a cada columna?
Para ello utilizaremos una acción llamada manage_{$post_type}_posts_custom_column
donde nuevamente reemplazaremos la variable con el nombre de nuestro Custom Post Type.
<?php
function fill_movies_posts_columns( $column_name, $post_id ) {
// Obtenemos todos los valores Post Meta de cada película
$movie_meta = get_post_meta($post_id);
// Recorremos cada columna y asignamos un valor.
switch( $column_name ):
case 'genero':
echo $movie_meta['movies_genero'][0];
break;
case 'duration':
echo sprintf("%s minutos", $movie_meta['movies_duration'][0]);
break;
case 'director':
echo sprintf("<a href='%s' target='_blank'>%s</a>", $movie_meta['movies_director_link'][0], $movie_meta['movies_director'][0]);
break;
endswitch;
}
add_action( 'manage_movies_posts_custom_column', 'fill_movies_posts_columns', 10, 2 );
En el código anterior recorremos fila por fila de nuestro listado y columna por columna para ir completando sus valores. Aquí pongo un simple ejemplo de campos personalizados del artículo pero podría reemplazarse por cualquier código PHP.

chelly
Excelente post!!. Me encantó y me funcionó a la perfección la parte de programarlo que es la que estaba buscando.
Mauricio Gelves
Me alegro Chelly 😉
Carlos M.
¿Cómo agrego una columna que me deje intsertar Código HTML desde la edicion rápida/masiva?
Mauricio Gelves
Intenta con este artículo => https://generatewp.com/managing-content-easily-quick-edit/
Sino tienes más soluciones buscando «how to add fields quick edit WordPress«.
Un saludo,
Mauricio
Posicionamiento Web Donostia
Gracias por el post Mauricio. Acabo de instalar Admin Columns en un proyecto. Eso sí, lo de ordenar columnas viene sólo en la versión PRO, pero en mi caso no es una funcionalidad esencial. Gracias de nuevo!
Mauricio Gelves
Gracias a ti, un saludo!
Tom
Pues para mi gusto queda incompleto, ya que no puedo ordenarlos. Por ejemplo, pinchar en el conteo de palabras y ordenar la tabla en función de esta variable.
Mauricio Gelves
No logro entender tu pregunta, pero con ambas soluciones podrías incluir la opción para ordenar el contenido:
Plugin => https://www.admincolumns.com/documentation/how-to/taxonomy-column-sorting-filtering-and-editing/
Programado => https://code.tutsplus.com/es/articles/quick-tip-make-your-custom-column-sortable–wp-25095
Un saludo,
Mauricio
marcos
Muchas gracias me vino genial 😀
Mauricio Gelves
¡Me alegro!
David
Excelente entrada. Gracias por compartirlo.
¿Es posible modificar a voluntad el ancho de las columnas? Resulta que todas tienen el mismo ancho y yo quiero que la primera, la que tiene el título, sea más ancha.
Muchas gracias
JuanKa Díaz
Genial aporte Mauricio 😉 se agradece que no solo recomiendes el plugin(que está genial por cierto) sino que además compartas el código para hacerlo de forma mas «purista» 😉
1 abrazote!
Xavier Pinyol
Exacto, un gran aporte Mauricio!!!
Código obligatorio en mi caso, para cada wp con ACF que haga a partir de hoy… 😉