Programación

Cómo filtrar posts por autor en WordPress Backend

Cuando tienes cientos o miles de entradas en tu sitio, es posible que quieras filtrar posts por autor en tu backend de WordPress.

Obtener todas las entradas de un autor nos permite poder ver de un vistazo cuántas, cuándo, y sobre todo, cuáles entradas ha escrito nuestro autor favorito, o bien, nosotros mismos.

El truco para filtrar posts por autor

Efectivamente, y tal y como lo estabas adivininando, recurrir a nuestro fichero más personalizable de todo WordPress: el archivo functions.php

Tan solo incluye esta función y su llamada en tu fichero y listo:

function comaporter_filter_by_the_author() {
 $params = array(
  'name' => 'author', // This is the "name" attribute for filter <select>
  'show_option_all' => 'All authors' // label for all authors
 );
 
 if ( isset($_GET['user']) )
  $params['selected'] = $_GET['user']; // choose selected user by $_GET variable
 
 wp_dropdown_users( $params ); // print the ready author list
}
add_action('restrict_manage_posts', 'comaporter_filter_by_the_author');

Otro truquillo interesante

Si quieres que solo aparezca la opción para filtrar posts por autor en las entradas, puedes hacerlo de forma muy sencilla.

Ya sea porque tengas muchos custom post types personalizados y no te interese o por cualquier otro motivo, simplemente, añade estas dos líneas al comienzo de la función:

if ( 'post' !== $post_type )
 return;

Y añade la variable $post_type como argumento de esa función, quedando el código fuente a pegar de esta forma:

function comaporter_filter_by_the_author($post_type) {
 // Apply this only on a specific post type
 if ( 'post' !== $post_type )
  return;
 
 $params = array(
  'name' => 'author', // this is the "name" attribute for filter <select>
  'show_option_all' => 'Todos los autores' // label for all authors 
 );
 
 if ( isset($_GET['user']) )
  $params['selected'] = $_GET['user']; // choose selected user by $_GET variable
 
 wp_dropdown_users( $params ); // print the ready author list
}
add_action('restrict_manage_posts', 'comaporter_filter_by_the_author');

Evidentemente, si necesitas que solo se aplique, digamos, al tipo de post «portfolio» para filtrar los portafolios por autor en el backend, sustituye «post» de la línea 3 por el tipo «portfolio».

Recuerda siempre crear un tema «child» sobre tu tema principal para poder customizarlo como prefieras, y de esta forma, dejar el tema principal intacto para poder actualizarlo sin problemas.

Fuente: Rudrastyh

Etiquetas: AutorFiltrarpost
José María

Ingeniero de formación, es un apasionado de pantallas, teclas, códigos, matemáticas y jeroglíficos varios; cuenta con un enfermizo síndrome obsesivo-compulsivo por el detalle y el trabajo bien hecho.

Ver comentarios