
🔐 Botón de inicio y cierre de sesión en el menú de WordPress: una guía paso a paso 2026
Estándar WordPress no puede mostrar un botón «Iniciar sesión» para visitantes no autenticados y un botón «Cerrar sesión» para usuarios autenticados en la misma ubicación del menú. A primera vista parece un detalle menor. Pero para un sitio con panel de miembro, área de membresía o foro es una necesidad básica, y sin ello la navegación se convierte en un juego de adivinanzas.
Anteriormente, el plugin BAW Login/Logout Menu cubría esta tarea. El autor discontinuó el proyecto en 2025, dejando a miles de sitios sin actualizaciones. Su sucesor directo ha tomado el relevo: Login or Logout Menu Item con más de 20 000 instalaciones activas y una calificación de 4.8 en WordPress.org.
Hemos recopilado todo en una sola guía: desde instalar el plugin en dos minutos hasta redirecciones personalizadas por rol y la desactivación de la barra de administración para usuarios comunes.
💡 Resumen rápido:
- Instale el plugin Login or Logout Menu Item y configure tres campos de redirección
- Añada un elemento de menú «Iniciar sesión|Cerrar sesión» mediante el editor clásico o de bloques
- Configure lógica afinada mediante fragmentos en functions.php: redirecciones por rol, cierre de sesión sin confirmación, reemplazo de wp-login.php
- Oculte la barra de administración a los usuarios comunes y bloquee su acceso a wp-admin
Método 1: plugin Login or Logout Menu Item, rápido y sin código

La forma más sencilla de añadir un botón dinámico de inicio y cierre de sesión es el plugin Login or Logout Menu Item. Es el sucesor directo de BAW Login/Logout Menu, escrito desde cero por uno de los colaboradores del proyecto original. A junio de 2026 el plugin cuenta con más de 20 000 instalaciones activas, 23 reseñas y una calificación de 4.8 estrellas. La versión 1.3.2 ha sido probada hasta WordPress 7.0.
¿Por qué este plugin en lugar de una solución con código? El plugin no toca functions.php y no se romperá al cambiar de tema. Es compatible con el editor de bloques, y el elemento «Iniciar sesión|Cerrar sesión» puede añadirse a un bloque de navegación mediante la búsqueda habitual. También tiene una página de ajustes dedicada: nada de URLs mágicas en los campos del menú, todo es transparente.
Instalación y configuración
Instale el plugin de la forma estándar: Plugins → Añadir nuevo, escriba Login or Logout Menu Item, pulse Instalar y Activar. Tras la activación aparece un nuevo elemento en el menú de administración: Ajustes → Login or Logout. Hay tres campos, y esto es lo que significan:
- URL de la página de inicio de sesión: la dirección de la página de inicio de sesión. Para la mayoría de los sitios
/wp-login.phpes suficiente. Si usa una página de inicio de sesión personalizada (por ejemplo/login/mediante MemberPress o WooCommerce), introdúzcala aquí. - URL de redirección tras inicio de sesión: a dónde llega el usuario después de iniciar sesión. Normalmente
/account/o simplemente/para la página de inicio. Tenga en cuenta que plugins de membresía como MemberPress o Restrict Content Pro pueden anular esta redirección con sus propios ajustes. - URL de redirección tras cierre de sesión: a dónde enviar al usuario después de cerrar sesión. Tiene sentido poner
/o/wp-login.php.
Añadir el elemento de menú
Vaya a Apariencia → Menús. En la esquina superior derecha pulse Opciones de pantalla y verifique que la casilla Login/Logout está activada. Aparecerá un bloque «Login/Logout» en la columna izquierda; marque Iniciar sesión|Cerrar sesión y pulse Añadir al menú.
El elemento de menú aparecerá en la lista. Su URL debe permanecer como #lolmiloginout# porque es el disparador del plugin; no la modifique. Puede editar la Etiqueta de navegación: por ejemplo «Iniciar sesión | Cerrar sesión» o «Mi cuenta». Guarde el menú.
Si trabaja con el editor de bloques (Apariencia → Editor, bloque de Navegación): pulse «+» para añadir un enlace, escriba «iniciar sesión» o «cerrar sesión» en la búsqueda y seleccione «Iniciar sesión|Cerrar sesión» de las sugerencias. El enlace se añadirá automáticamente con la URL correcta. También puede introducirla manualmente: #lolmiloginout#.
Qué hacer si el menú no cambia
La causa más común es la caché. Desactive la caché para usuarios autenticados en los ajustes de su plugin de caché: WP Rocket, Cloudflare APO, LiteSpeed. La segunda causa es otro plugin que intercepta la redirección. Revise los ajustes de su plugin de membresía o seguridad: muchos tienen sus propias reglas de redirección tras el inicio de sesión que tienen prioridad.
Método 2: inicio y cierre de sesión mediante código en functions.php
El plugin cubre la mayoría de los escenarios típicos. Pero a veces necesita una lógica más granular: diferentes redirecciones para distintos roles, cierre de sesión forzado sin confirmación, ocultar la barra de administración. Aquí es donde entra functions.php.
Añada todo el código siguiente mediante el plugin Code Snippets; es más seguro que editar functions.php directamente. Un error de sintaxis no tirará el sitio; simplemente desactivará el fragmento.
Inicio de sesión con redirección por rol
Este código redirige a los administradores al escritorio de administración y a todos los demás a una página de cuenta de miembro. Añádalo a Code Snippets o al functions.php de su tema hijo.
1 /** 2 * Redirect after login: admin → wp-admin, others → /account 3 */ 4 function sd_redirect_by_role( $url, $request, $user ) { 5 if ( $user && is_object( $user ) && is_a( $user, 'WP_User' ) ) { 6 if ( $user->has_cap( 'administrator' ) ) { 7 $url = admin_url(); 8 } else { 9 $url = home_url( '/account' ); 10 } 11 } 12 return $url; 13 } 14 add_filter( 'login_redirect', 'sd_redirect_by_role', 10, 3 );
Cómo funciona: el filtro login_redirect se ejecuta en el momento del inicio de sesión. La función comprueba el rol mediante has_cap('administrator') y devuelve la URL apropiada. La prioridad 10 es estándar, y 3 limita el número de argumentos aceptados. Si el slug de su página de cuenta difiere de /account, sustitúyalo en la línea home_url('/account').
Cierre de sesión sin confirmación
Por defecto WordPress muestra una página de confirmación al pulsar un enlace de cierre de sesión: «¿Está seguro de que desea cerrar sesión?» En dispositivos móviles esto resulta especialmente molesto. Aquí tiene el código que elimina la confirmación:
1 /** 2 * Logout without confirmation, redirect to home 3 */ 4 add_action( 'check_admin_referer', 'sd_logout_without_confirm', 10, 2 ); 5 function sd_logout_without_confirm( $action, $result ) { 6 if ( $action === 'log-out' && ! isset( $_GET['_wpnonce'] ) ) { 7 $redirect_to = isset( $_REQUEST['redirect_to'] ) 8 ? $_REQUEST['redirect_to'] 9 : home_url( '/' ); 10 $location = str_replace( '&', '&', wp_logout_url( $redirect_to ) ); 11 header( "Location: $location" ); 12 die; 13 } 14 }
Antes de añadir esto, haga una copia de seguridad completa del sitio. La función intercepta la comprobación de nonce durante el cierre de sesión y realiza la redirección de inmediato, omitiendo la página de confirmación. Tras la instalación pruébelo: abra your-domain/wp-login.php?action=logout en modo incógnito; debería ser redirigido a la página de inicio sin una pantalla intermedia.
Algunos plugins de seguridad (Wordfence, Solid Security) anulan el comportamiento de cierre de sesión. Si la confirmación sigue apareciendo, desactive su opción «confirmar cierre de sesión» o añada la URL /wp-login.php?action=logout a la lista blanca.
Escenario: página de inicio de sesión personalizada en lugar de wp-login.php
Si ha reemplazado la página de inicio de sesión estándar por una personalizada (por ejemplo mediante MemberPress o WooCommerce), necesita redirigir el acceso directo a wp-login.php:
1 /** 2 * Replace wp-login.php with custom login page 3 */ 4 add_action( 'init', 'sd_custom_login_page' ); 5 function sd_custom_login_page() { 6 global $pagenow; 7 if ( ! is_user_logged_in() && 'wp-login.php' === $pagenow ) { 8 wp_redirect( home_url( '/login' ) ); 9 exit; 10 } 11 }
Sustituya /login por el slug de su página de inicio de sesión. Esto es útil cuando usa un plugin de panel de miembro y no desea exponer el formulario estándar de WordPress.
Cómo ocultar la barra de administración para todos excepto administradores
La barra de administración de WordPress en la parte superior del sitio solo es útil para quienes gestionan el sitio. Los usuarios comunes no la necesitan y recarga la interfaz, especialmente si está construyendo un panel de miembro con un diseño limpio.
Desactivar la barra de administración mediante código
Añada esto a Code Snippets o al functions.php de su tema hijo:
1 /** 2 * Hide admin bar for everyone except administrators 3 */ 4 add_action( 'after_setup_theme', 'sd_remove_admin_bar_for_non_admins' ); 5 function sd_remove_admin_bar_for_non_admins() { 6 if ( ! current_user_can( 'administrator' ) && ! is_admin() ) { 7 show_admin_bar( false ); 8 } 9 }
La función current_user_can('administrator') comprueba el rol, y ! is_admin() asegura que la barra permanezca visible en el área de administración propiamente dicha, donde cualquiera con acceso la necesita.
Bloquear el acceso a wp-admin
Ocultar la barra no es suficiente. También necesita bloquear el acceso a /wp-admin/ para quienes no lo necesitan:
1 /** 2 * Block access to wp-admin for non-administrators 3 */ 4 add_action( 'admin_init', 'sd_block_wp_admin_for_non_admins' ); 5 function sd_block_wp_admin_for_non_admins() { 6 if ( ! current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { 7 wp_redirect( home_url( '/restrict_user' ) ); 8 exit; 9 } 10 }
La condición DOING_AJAX es crítica: sin ella bloqueará las peticiones AJAX de los plugins de panel de miembro que los usuarios necesitan ejecutar desde su perfil. Sustituya la página /restrict_user por cualquier página de marcador de posición, por ejemplo la página de inicio o una página con un mensaje de «Acceso denegado».
⁉️🤔 Preguntas frecuentes
El plugin Login or Logout Menu Item no funciona con PHP 8.0, ¿qué debo hacer?
Hay una reseña negativa en WordPress.org sobre incompatibilidad con PHP 8.0 de enero de 2026. Sin embargo, el plugin ha sido probado hasta WP 7.0, y más de 20 000 instalaciones activas confirman un funcionamiento estable en versiones modernas de PHP. Si encuentra un error: verifique la versión del plugin (debe ser 1.3.2), desactive otros plugins de redirección, limpie la caché. En un sitio de prueba con PHP 8.2 no se encontraron problemas.
¿Puedo hacer esto sin un plugin, usando solo código?
Sí. El método 2 de este artículo cubre completamente el inicio de sesión, cierre de sesión y redirecciones mediante
functions.php. El plugin es más conveniente: ajustes desde el panel de administración sin editar archivos, compatibilidad con el editor de bloques, actualizaciones automáticas. Si el sitio es simple y solo necesita un botón de inicio y cierre de sesión, use el plugin. Si la lógica es compleja (diferentes redirecciones por rol, múltiples páginas de inicio de sesión), use código.
¿Qué debo hacer si el elemento de menú no aparece en el editor de bloques?
En el bloque de Navegación pulse «+» y escriba «iniciar sesión» en la búsqueda (no «lolmiloginout»). Si el elemento no aparece, verifique que el plugin está activo y que su versión de WordPress es 6.0 o superior. Para temas antiguos sin el editor de bloques use la interfaz clásica en Apariencia → Menús.
¿Cómo configuro redirecciones para diferentes roles mediante el plugin?
Login or Logout Menu Item no distingue entre roles; realiza una redirección para todos los usuarios. Para redirecciones por rol use el código del Método 2: la función
sd_redirect_by_rolefunciona incluso si el elemento de menú se añadió mediante el plugin. El filtrologin_redirectse ejecuta después de la redirección del plugin y la anula.
¿Por qué sigue apareciendo la página de confirmación de cierre de sesión?
Algunos plugins de seguridad (Wordfence, Solid Security) anulan el comportamiento de cierre de sesión a su propio nivel. Desactive su opción de confirmación de cierre de sesión o añada la URL de cierre de sesión a la lista blanca. El código del Método 2 se ejecuta antes que la mayoría de los plugins, pero no todos; en casos raros puede necesitar configurar el propio plugin de seguridad.
¿En qué se diferencia WP-Recall de Login or Logout Menu Item?
WP-Recall es un plugin de panel de miembro con todas las funciones: perfiles, mensajes privados, grupos, módulos de comercio. El inicio y cierre de sesión están integrados como parte del ecosistema. Login or Logout Menu Item resuelve exactamente una tarea: un botón dinámico de inicio/cierre de sesión en el menú. Si necesita un panel de miembro completo con muchas funciones, considere WP-Recall o MemberPress. Si solo necesita un botón en el menú, Login or Logout Menu Item es más ligero y no trae equipaje extra.
Qué usar en su sitio: plugin o código
La solución rápida para un sitio típico es el plugin Login or Logout Menu Item. Instálelo, rellene tres campos en Ajustes, añada el elemento de menú. Todo funciona en cinco minutos. Veinte mil instalaciones activas y la compatibilidad con WP 7.0 confirman que la herramienta es madura y recibe mantenimiento.
Si su lógica de inicio de sesión no es trivial (diferentes redirecciones para distintos roles, integración con un plugin de membresía, página de inicio de sesión personalizada), use el código del Método 2. Es más flexible pero requiere precaución. Escriba código mediante Code Snippets, no directamente en el archivo del tema. Un error tipográfico en functions.php y el sitio se cae.
Una combinación del plugin para el menú y código para las redirecciones es el compromiso que usamos en la mayoría de los proyectos. El plugin proporciona una gestión conveniente del elemento de menú y compatibilidad con el editor de bloques. El código personalizado maneja los requisitos específicos de roles y redirecciones sin complicar los ajustes del plugin.
Elija en función de su tarea, no de la lista de verificación de otra persona. Para un sitio simple con un área de membresía, el plugin es suficiente. Para un mercado o plataforma educativa, el código es esencial. En cualquier caso, mantenga una copia de seguridad antes de hacer cambios y pruebe en una copia de staging.



