Una columna extra en el admin de WordPressAprovechando que WordPress tiene muchísimas funciones que uno pocas veces usa, decidí agregar una columna adicional el la sección de gestionar posts del administrativo de WordPress (/wp-admin/edit.php). Para que esto funcione necesitaremos agregar un filtro usando manage_posts_columns que nos permitirá agregar, modificar o eliminar columnas, y luego usaremos la acción manage_posts_custom_column con la que agregaremos la función que se encargará de devolver los datos de la columna, esta será llamada si se encuentra una columna adicional a las que maneja WordPress.

Primero agregaremos nuestra función al filtro manage_posts_columns, como esto solo funcionará dentro del admin y los plugins siempre son llamados no importando si la petición fue fuera del admin, el código sería así:

if ( is_admin() ) {
	add_filter('manage_posts_columns', 'admin_columns');
}

function admin_columns($defaults) 
{
	$defaults['views'] = __('Views');
	add_action('manage_posts_custom_column', 'admin_postviews_col', 10, 2);
	return $defaults;
}

Con el llamado a is_admin() aseguramos que la petición actual sea dentro del admin de WordPress, sino lo es no hacemos perder más tiempo al proceso. Con la función admin_columns modificaremos las columnas que WordPress nos pasa en el parámetro $defaults, en ese caso solo agregaremos una columna con el identificador views y el valor asignado a dicho elemento será el texto en la cabecera de la columna.

Para que los datos de cada fila se muestren necesitamos que admin_postviews_col() sea llamado, para ello es que la agregamos en la acción manage_posts_custom_column. Esta función debe comprobar que la columna actual es la que deseamos, en caso de que otros plugins también agregaron las suyas, y los datos deben ser enviados directamente al navegador, no deben ser devueltos:

function admin_postviews_col($column_name, $id) 
{
    if( $column_name == 'views' ) {
		if (function_exists('the_views') )
			the_views();
	}
}

the_views() es una función del plugin WP-PostViews, y esta enviará el contador de lecturas al navegador. El parámetro $id es el identificador del post que está siendo tratado en la fila actual, o mejor aún se pueden saber los datos del post con global $post;. En este punto ya no necesitamos hacer nada más, veremos el contador de lecturas de cada post (fila de la tabla) como en la imagen al inicio de este post.

Eliminando una Columna

Que pasa si eres el único autor del blog y tampoco usas tags para nada, para eliminar esas dos columnas del listado es bastante sencillo, tan solo hay que eliminarlas del array $defaults cuando la acción manage_posts_columns sea ejecutada:

if (is_admin() ) {
	add_filter('manage_posts_columns', 'admin_unset_columns');
}

function admin_unset_columns($defaults) 
{
    unset($defaults['tags']);
    unset($defaults['author']);
    return $defaults;
}

Bonus: Columnas en WordPress 2.7

En el caso de WordPress 2.7, probablemente tengas que darle un ancho a la nueva columna que agregues para que no distorsione la distribución de la tabla. Es bastante simple hacerlo, primero tienes que hacer que una función sea llamada mientras se está creando el <head> de /wp-admin/edit.php:

if( version_compare( $wp_version, '2.7', '>=' ) ) { 
	add_action('admin_head-edit.php','admin_col_css');
}

function admin_viewscol_css() { 
?&gt;
&lt;style type="text/css"&gt;.fixed .column-views{width:10%;}&lt;/style&gt;
&lt;?php
}

Esto es para no mandar ese estilo en todas las páginas del wp-admin, sino en solo la que nos interesa. Luego admin_viewscol_css() se encargará de enviar el estilo apropiado, en el caso de la columna de lecturas, un 10% de la tabla parece ser adecuado.

Para las eliminar columnas por defecto de WordPress, con la versión 2.7 es mucho más sencillo, desde la misma página se pueden esconder las columnas indeseadas:

Ocultar columnas en WordPress 2.7

Sin escribir una sola linea de código.

Descargar Plugins

Si les interesa, cree dos plugins para que puedan ver el código completo y funcional: