Cómo cambiar el enlace de logout predeterminado en el Admin de WordPress

14 jul 2012, 03:42:23
Vistas: 18.7K
Votos: 6

Quiero usar otro enlace para logout porque tengo /wp-admin/* protegido con htpassword. ¿Hay alguna forma de hacer esto? ¿Algo como crear una página personalizada como sitio.com/logout y luego usarla como mi nuevo enlace de logout?

¡Gracias!

0
Todas las respuestas a la pregunta 6
9

Puedes filtrar 'logout_url' y devolver un valor personalizado si estás en el área de administración:

add_filter( 'logout_url', 'wpse_58453_logout_url' );
function wpse_58453_logout_url( $default ) 
{
    // establece tu URL personalizada aquí
    return is_admin() ? 'http://example.com/custom' : $default;
}
14 jul 2012 03:55:04
Comentarios

¿Pero por qué obtengo un 404? Intenté mysite.com/logout pero obtengo un 404, ¿necesito agregar algún código al final de la URL?

tiltdown tiltdown
14 jul 2012 10:12:05

Bueno, el objetivo debería existir en algún lugar. :) Podrías crear un endpoint personalizado (ejemplo).

fuxia fuxia
14 jul 2012 10:15:21

¿Qué hará con el endpoint? Creé una página llamada 'logout' y solo la redirige allí, ¿qué necesito agregar en la página de logout? Gracias por tu respuesta.

tiltdown tiltdown
14 jul 2012 10:27:23

No estoy seguro si todavía te sigo... ¿quizás esa es una pregunta aparte?

fuxia fuxia
14 jul 2012 11:21:44

No, es la misma pregunta. Esta es la cuestión: seguí tu función, la agregué a mi archivo de funciones personalizadas y luego la configuré como "misitio.com/logout", donde logout es una página de WordPress. Cuando hago <?php echo wp_logout_url( ); ?> me da la URL correcta de cierre de sesión, que es misitio.com/logout, pero cuando hago clic en ella, simplemente me redirige a la página de WordPress /logout. ¿Necesito configurar algún código en mi página /logout de WordPress?

tiltdown tiltdown
14 jul 2012 11:27:35

No entiendo. ¿Qué tiene de malo que te redirija a /logout si esa es la página que configuraste en la función?

fuxia fuxia
14 jul 2012 11:30:00

http://mysite.com/wp-login.php?action=logout&redirect_to=url Actualmente esta es la URL predeterminada de cierre de sesión para mi sitio. No quiero usar este enlace. Quiero usar algo como http://mysite.com/logout para realizar la acción de cierre de sesión. No tengo problema con la redirección después del cierre de sesión. Espero que entiendan mi punto. ¡Gracias!

tiltdown tiltdown
14 jul 2012 13:43:14

continuemos esta discusión en el chat

tiltdown tiltdown
14 jul 2012 13:49:02

Encontré la solución aquí: https://www.kmbytes.com/wordpress-logout-redirect-filter/

karlosuccess karlosuccess
4 mar 2019 20:12:34
Mostrar los 4 comentarios restantes
0

Creo que deberías agregar una regla de reescritura en tu archivo htaccess como esta.

RewriteRule ^logout/(.*) /wp-login.php?action=logout&_wpnonce=$1 [QSA,L]
23 dic 2012 13:39:00
1

Esto funcionó para mí redirigiendo a la página de inicio:

add_action('wp_logout','unlog');

function unlog(){
  wp_redirect( site_url() );
  exit();
}
15 dic 2016 20:08:57
Comentarios

Gracias, esto funciona. La respuesta aceptada solo hacía una redirección sin cerrar sesión.

Fabian von Ellerts Fabian von Ellerts
13 may 2019 17:53:46
0

Encontré la solución aquí: https://www.kmbytes.com/wordpress-logout-redirect-filter/

¡Y funciona genial!

add_filter( 'logout_url', 'my_logout_url' );
function my_logout_url( $url ) {
    $redirect = home_url();
    return $url.'&redirect_to='.$redirect;
}

¡Saludos!

4 mar 2019 20:11:54
2
    function wp_loginout( $redirect = '', $echo = true ) {
    if ( ! is_user_logged_in() ) {
        $link = '<a href="' . esc_url( wp_login_url( $redirect ) ) . '">' . __( 'Iniciar sesión' ) . '</a>';
    } else {
        $link = '<a href="' . esc_url( wp_logout_url( $redirect ) ) . '">' . __( 'Cerrar sesión' ) . '</a>';
    }
 
    if ( $echo ) {
        /**
         * Filtra la salida HTML para el enlace de Iniciar/Cerrar sesión.
         *
         * @since 1.5.0
         *
         * @param string $link El contenido HTML del enlace.
         */
        echo apply_filters( 'loginout', $link );
    } else {
        /** Este filtro está documentado en wp-includes/general-template.php */
        return apply_filters( 'loginout', $link );
    }
}

Muestra un enlace que permite a los usuarios navegar a la página de Inicio de sesión para iniciar o cerrar sesión, dependiendo de si actualmente están conectados.

25 may 2022 07:08:42
Comentarios

¡Bienvenido a la comunidad de Desarrollo de WordPress! Esta función es tal como se anuncia, sin embargo no resuelve realmente la pregunta, que estaba preguntando cómo cambiar el destino del enlace ya disponible

bosco bosco
26 may 2022 21:23:01

Esto no proporciona una respuesta a la pregunta. Una vez que tengas suficiente reputación podrás comentar en cualquier publicación; en su lugar, proporciona respuestas que no requieran aclaración del que pregunta. - Desde la Revisión

vancoder vancoder
27 may 2022 00:31:03
0

Una solución muy interesante es crear una página "Cerrar sesión" y luego crear su plantilla en la carpeta principal de tu tema mediante el archivo page-{tu-slug-de-logout}.php. Aquí está el código más simple para esta página.

    if ( is_user_logged_in() ) : 
        wp_logout();
        wp_redirect(site_url());
    else : 
        wp_redirect(site_url());
    endif;

Añade un argumento a site_url() con cualquier slug o déjalo vacío para ser redirigido a tu página de inicio al cerrar sesión. Es una buena opción porque usando cualquier código PHP puedes realizar muchas acciones antes de cerrar sesión.

9 feb 2023 04:33:11