
⌨️ Cómo añadir un menú desplegable de autor en la pantalla de todas las entradas en WordPress
El filtro predeterminado «Mío» en la pantalla «Todas las entradas» de WordPress muestra solo las entradas del usuario actual. Esto funciona mientras usted sea el único autor. Pero cuando tres editores, cinco colaboradores y un par de expertos invitados trabajan en el sitio, encontrar quién escribió qué se convierte en un desplazamiento interminable por una tabla.
La interfaz nativa de WordPress no ofrece un menú desplegable de autores junto a los filtros de fecha y categoría. Los desarrolladores limitaron la pantalla deliberadamente, asumiendo que el filtro «Mío» es suficiente para los administradores. En la práctica, esto es catastróficamente insuficiente.
Usted puede añadir un menú desplegable de autores sin un plugin, usando un fragmento limpio de PHP. El código se engancha en los hooks nativos del admin y no entra en conflicto con otros filtros. El desplegable de autores funciona en conjunto con el botón nativo «Filtrar».
💡 Resumen rápido:
- Registramos el hook
admin_initpara que el código solo funcione en el panel de administración y no afecte la portada - Mostramos
wp_dropdown_users()medianterestrict_manage_postspara que el selector aparezca en la fila de filtros junto a fecha y categoría - Limitamos el alcance con
get_current_screen()solo a entradas y páginas, dejando los CPT intactos - El autor seleccionado se recuerda mediante
get_query_var('author')y funciona junto con otros filtros
Cómo funciona internamente
WordPress renderiza los filtros en las pantallas de listado a través del hook restrict_manage_posts. Se ejecuta justo antes del botón «Filtrar» en la tabla de entradas y páginas. Todo lo que se imprima dentro de este hook se convierte en parte de la fila de filtros, igual que los desplegables del sistema de fecha y categoría.
La función wp_dropdown_users() es la API nativa de WordPress para generar un select HTML con usuarios. Acepta un array de argumentos: lista de usuarios, valor predeterminado, clase CSS, y devuelve un <select> listo para usar. Sin marcado manual ni consultas directas a la base de datos.
Combinar estas dos herramientas le da una interfaz nativa indistinguible de los filtros integrados de WordPress.
Código: añadir el desplegable de autores
Inserte el fragmento en el archivo functions.php del tema activo o mediante un plugin de fragmentos de código (por ejemplo, Code Snippets). El código registra un hook en el evento admin_init y muestra el selector de autores en las pantallas de entradas y páginas.
1 add_action('admin_init', 'tsd_author_dropdown_init'); 2 function tsd_author_dropdown_init() { 3 add_action('restrict_manage_posts', 'tsd_author_dropdown'); 4 } 5 function tsd_author_dropdown() { 6 if ($GLOBALS['pagenow'] !== 'edit.php') { 7 return; 8 } 9 $screen = get_current_screen(); 10 if (empty($screen) 11 || ($screen->id !== 'edit-page' && $screen->id !== 'edit-post') 12 ) { 13 return; 14 } 15 wp_dropdown_users(array( 16 'show_option_all' => 'All Authors', 17 'selected' => get_query_var('author', 0), 18 'name' => 'author' 19 )); 20 }
Qué hace cada parte:
admin_init activa el registro solo en el panel de administración. La portada no se ve afectada, sin carga adicional.
restrict_manage_posts muestra el selector en la fila de filtros, justo donde se ubican los filtros de fecha y categoría. El desplegable aparece tanto en la pantalla de entradas como en la de páginas.
$GLOBALS['pagenow'] verifica que estemos en la página de listado de entradas (edit.php). Si el usuario va a ajustes o edita una entrada específica, el código termina silenciosamente.
get_current_screen() precisa el tipo de contenido. El fragmento solo funciona para post y page estándar, omitiendo los tipos de contenido personalizados (cpt). Esta es una limitación deliberada: la mayoría de los CPT de plugins de terceros no usan autores para diferenciar el contenido.
wp_dropdown_users() genera el select HTML. El argumento 'show_option_all' establece el texto para la opción «mostrar todos los autores», 'selected' mediante get_query_var('author') recuerda el usuario seleccionado después de filtrar, y 'name' => 'author' asegura que WordPress reconozca el parámetro como un filtro de autor y lo procese con una consulta estándar.

Después de insertar el código, el desplegable aparece en las pantallas «Todas las entradas» y «Todas las páginas» junto a los filtros nativos. El botón «Filtrar» funciona como de costumbre. Usted puede filtrar simultáneamente por autor, fecha y categoría, y WordPress intersectará correctamente las condiciones.
Ajuste fino: lo que puede cambiar
El fragmento es intencionadamente mínimo, pero wp_dropdown_users() admite docenas de parámetros. Usted puede adaptar casi todo a su escenario.
Cambiar el texto «Todos los autores». Reemplace 'show_option_all' con su propia variante, por ejemplo, 'Все авторы' o 'Любой автор'.
Excluir usuarios específicos. El parámetro 'exclude' acepta un array de IDs. Útil si hay cuentas de sistema entre los usuarios que no deberían aparecer en la lista:
1 'exclude' => array(1, 15, 23),
Mostrar solo ciertos roles. El parámetro 'role__in' filtra usuarios por roles. Por ejemplo, solo autores y editores:
1 'role__in' => array('author', 'editor'),
Ordenar no alfabéticamente. Por defecto, 'orderby' => 'display_name'. Puede reemplazarlo con 'ID', 'user_login' o 'post_count'. La última opción mostrará a los autores más activos al principio.
Añadir a otros tipos de contenido. Elimine la comprobación de $screen->id y el desplegable aparecerá en todas las pantallas edit.php, incluidos los tipos de contenido personalizados. O añada CPT específicos a la condición:
1 $allowed = array('edit-post', 'edit-page', 'edit-product'); 2 if (!in_array($screen->id, $allowed, true)) { 3 return; 4 }
⁉️🤔 Preguntas frecuentes
¿El fragmento funciona con Gutenberg y el Editor Clásico simultáneamente?
Sí. El código no toca el editor, solo modifica las listas del admin, que no dependen del editor elegido. El fragmento funciona de forma idéntica en Gutenberg, Editor Clásico y cualquier maquetador visual. Probado en WordPress 6.4-6.7 con Gutenberg activo y sin él. El hook
restrict_manage_postsexiste desde la versión 2.1 y no ha cambiado en términos de compatibilidad. El código funcionará en cualquier versión moderna de WordPress.
¿Necesito limpiar la caché después de insertar el código?
No. Los hooks de WordPress se registran al vuelo con cada solicitud al panel de administración. Simplemente refresque la página de listado de entradas. Si usa caché del lado del servidor (Redis, Varnish), no afecta al panel de administración, que está excluido de la caché por defecto.
¿Puedo añadir el desplegable de autores sin acceso a functions.php?
Sí, mediante un plugin de fragmentos de código. Los plugins gratuitos Code Snippets, WPCode o FluentSnippets funcionarán. Inserte el código como un fragmento PHP con inicio automático y funcionará igual que en
functions.php. La ventaja de un gestor de fragmentos es que un error de código no tirará el sitio. El plugin capturará el error fatal y desactivará el fragmento.
¿Por qué no aparece el desplegable en la pantalla de un tipo de contenido personalizado?
El fragmento está limitado deliberadamente a las pantallas
edit-postyedit-page. Para añadir CPT, amplíe la condición en la comprobación de$screen->id(vea la sección «Ajuste fino»). Nota: para CPT registrados sin soporte de autor ('supports' => array('author')), el filtrado por autor no funcionará incluso con el desplegable presente.
¿El fragmento entra en conflicto con plugins como Admin Columns o Adminimize?
No. Estos plugins funcionan en otros hooks y modifican las columnas de la tabla, no la fila de filtros.
restrict_manage_postsañade el selector antes del botón «Filtrar», en una zona que los plugins de columnas no tocan. En tres años de uso en sitios con múltiples autores, no se ha registrado ningún conflicto.
¿Vale la pena añadir el desplegable de autores a su sitio?
Si más de dos personas publican en el sitio, definitivamente sí. El filtro «Mío» muestra las entradas del usuario actual pero no le permite cambiar a los artículos de un colega. El desplegable de autores cierra esta brecha sin plugins y sin carga para la base de datos. wp_dropdown_users() hace una consulta mediante get_users(), que WordPress almacena en caché.
Para un blog en solitario, el filtro no tiene sentido. Usted es el único autor de todos modos. Pero tan pronto como aparezca una segunda persona, el tiempo ahorrado por el filtrado instantáneo compensa los tres minutos que lleva insertar el código.
Copie el fragmento en functions.php o mediante Code Snippets, refresque la página de listado de entradas y compruebe el filtrado por autor en conjunto con el filtro de fecha. Si necesita adaptarlo a su estructura de roles y tipos de contenido, los parámetros role__in, exclude y orderby le dan control total sobre el contenido de la lista sin plugins adicionales.



