Añadir enlace login logout en cabecera
-
Hola comunidad.
Estoy intentando incluir un enlace para iniciar sesión o cerrarla (dependiendo del estado actual) y meterlo en una barra superior que tiene mi tema.Ya tengo localizada el archivo de la barra e incluido la llamada a la función jp_login_cabecera()
En el archivo functions ya he creado la función que funciona correctamente:
function jp_login_cabecera (){ if ( is_user_logged_in()) { echo ='Registrado'; } else { echo 'No registrado'; } }
Pero no consigo que muestre ni el enlace ni el html, algo como esto:
function jp_login_cabecera (){ if ( is_user_logged_in()){ $jplogin = '<li class="menu-item"><a href="'. wp_logout_url(get_permalink()) .'">Salir</a></li>'; } else { $jplogin = '<li class="menu-item">Entrar</li>'; } return $jplogin; }
¿Que estoy haciendo mal?
Muchas gracias
- Este debate fue modificado hace 5 años, 10 meses por J.Parra.
La página con la que necesito ayuda: [accede para ver el enlace]
-
Aqui tienes un ejemplo
https://codex.wordpress.org/Function_Reference/wp_loginoutMuchas gracias por responder tan rápido.
Adaptando el ejemplo a mis necesidades he probado lo siguiente, pero sin éxito.
function jp_login_cabecera ($menu){ if ( is_user_logged_in()){ $loginout = '<li class="menu-item"><a href="'. wp_logout_url(get_permalink()) .'">Salir</a></li>'; $menu .= $loginout; } else { echo 'No registrado'; } return $menu; }
Cuando no estás registrado si te muestra el «No registrado» pero cuando detecta que si, no hace nada y en el html no se ve creado el
<li>
Quiero aclarar que mi intención es tener el «if» para poder meter una u otra clase al texto «Entrar» y «Salir» porque así después les daré estilos diferentes con CSS.
Eso te funcionaría solo si tuvieras un menú.
Prueba
function jp_login_cabecera ($menu){ if ( is_user_logged_in()){ $loginout = '<li class="menu-item"><a href="'. wp_logout_url(get_permalink()) .'">Salir</a></li>'; echo $loginout; } else { echo 'No registrado'; } }
- Esta respuesta fue modificada hace 5 años, 10 meses por almendron.
Estoy viendo que
wp_logout_url( get_permalink() )
es para cuando estás dentro del «loop» que no es el caso.Prueba a cambiarlo por
wp_logout_url( home_url() )
o simplementewp_logout_url()
y no redireccionas.Y haz la prueba con el
$menu .= $loginout;
y conecho $loginout;
Perfecto almendrón, se ve que el problema lo tenia al querer redireccionar a la misma página que estaba, algo no funcionaba y al limpiar un poco me ha funcionado.
Muchas gracias.
Dejo el código aquí por si le interesa a alguien, aunque ahora voy a por la «Fase 2» que al lado del Salir aparezca el nombre del usuario conectado y un icono de color para que sea fácil identificar si estas «on o off».
function jp_login_cabecera ($menu){ if ( is_user_logged_in()){ $loginout = '<li class="menu-item btn-menu btn-logout"><a href="'. wp_logout_url() .'">Salir</a></li>'; echo $loginout; } else { $loginout = '<li class="menu-item btn-menu btn-login"><a href="'. wp_login_url() .'">Entrar</a></li>'; echo $loginout; } }
- Esta respuesta fue modificada hace 5 años, 10 meses por J.Parra.
Bueno pues ya lo tengo como yo quería. Muchas gracias por vuestra ayuda.
Os dejo esta imagen de como queda tanto logueado como no.
Aquí podéis ver la web funcionando:
Y aquí el código final:
function jp_login_cabecera ($menu){ if ( is_user_logged_in()){ $cu = wp_get_current_user(); $enlace_salir = '<li class="menu-item btn-menu btn-logout"><a href="'. wp_logout_url() .'">Salir - '. $cu->user_login .'<i class="fa fa-power-off fa-jp-ver"></i></a></li>'; echo $enlace_salir; } else { $loginout = '<li class="menu-item btn-menu btn-login"><a href="'. wp_login_url() .'">Entrar<i class="fa fa-power-off fa-jp-roj"></i></a></li>'; echo $loginout; } }
Gracias de nuevo. Saludos.
De nada. Un saludo.
- El debate ‘Añadir enlace login logout en cabecera’ está cerrado a nuevas respuestas.