Blog personal de IT, viajes y otros hobbies

Modificar columnas en wordpress con admin columns

¿Cómo personalizar las columnas de tus listados de WordPress?

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?

personalizar columnas en wordpress
Columnas por defecto en el listado de entradas de WordPress.

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.

admin columns plugin wordpress

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?

  1. 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).
    admin columns wordpress plugin nueva columna
  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.
    admin columns wordpress-plugin-seleccionar tipo de columna
  3. Configuración: Según el tipo de columna que selecciones tendrás distintos campos de configuración que ajustar.
admin columns wordpress plugin configuracion de columna
Si elegimos el tipo de columna «Imagen Destacada» vemos que podemos configurar el tamaño de la imagen a mostrar en el listado.

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.

admin columns wordpress plugin listado final

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:

NombreDescripciónConfiguraciónEjemplo
Acciones:Muestra los enlaces para editar, ver o borrar el post. 
admin columns wordpress plugin columna acciones
Alias:Muestra el slug del post. 
admin columns wordpress plugin columna alias
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).
admin columns wordpress plugin columna cometarios
Content:Muestra parte del contenido del post.Tamaño de extracto: Nos permite seleccionar la cantidad de palabras a mostrar.
admin columns wordpress plugin columna contenido
Conteo de palabras:Muestra la cantidad de palabras que conforman nuestro post. 
admin columns wordpress plugin columna conteo de palabras
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.
admin columns wordpress plugin columna tiempo de lectura
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). 
admin columns wordpress plugin columna imagen destacada

Personalizando columnas por código

Los pasos para personalizar por código son los siguientes:

  1. Definir el nombre y el título de las cabeceras.
  2. 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.

Personalizar columnas de WordPress con código
Así se ven las nuevas columnas generadas por código.

Anterior

¿Cómo crear taxonomías en WordPress?

Siguiente

Mi primer año como Freelance

13 comentarios

  1. chelly

    Excelente post!!. Me encantó y me funcionó a la perfección la parte de programarlo que es la que estaba buscando.

  2. ¿Cómo agrego una columna que me deje intsertar Código HTML desde la edicion rápida/masiva?

  3. 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!

  4. 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.

  5. marcos

    Muchas gracias me vino genial 😀

  6. 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

  7. 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!

    • Exacto, un gran aporte Mauricio!!!

      Código obligatorio en mi caso, para cada wp con ACF que haga a partir de hoy… 😉

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Funciona con WordPress & Tema de Anders Norén