web-dev-qa-db-fra.com

Masquage de l'URL de déconnexion

L'objectif principal est de cacher que le site est propulsé par WordPress. La partie connexion est entièrement verrouillée, mais l'URL de déconnexion contient toujours ces délinéateurs wp qui expliquent que c'est un site wordpress.

Existe-t-il un moyen de masquer cette URL? Peut-être par une conjonction de redirection personnalisée où le lien côté client passe à www.site.com/logout/ mais quelque chose dans functions.php reconstruit le lien de déconnexion réel?

J'ai essayé des variantes de wp_logout_url('$index.php') mais cela ne fait que rediriger. J'ai aussi essayé

add_filter( 'wp_logout_url', 'cusotm_logout' );
function cusotm_logout() 
{
    // set your URL here
    return 'http://www.site.com/logout/';
}

Non seulement ce dernier ne fonctionne pas, il ajoute également title= à la fin de l'URL. Je ne sais pas si la déconnexion ne fonctionne pas à cause de cela ou si la fonction elle-même est totalement une mauvaise approche.

Je n'utilise des plugins que si c'est absolument nécessaire. Vous recherchez une solution auto-gérée ... sans avoir à mod_rewrite si possible.

4
kristina childs

Remplacer seulement l'URL n'est pas suffisant. Vous devez dire à WordPress quoi faire avec la nouvelle URL.

Exemple de code, crée une URL de déconnexion telle que example.com/logout=1 et redirige vers la page d'accueil ou une URL personnalisée après la déconnexion de l'utilisateur:

add_filter( 'logout_url', 't5_custom_logout_url', 10, 2 );
add_action( 'wp_loaded', 't5_custom_logout_action' );

/**
 * Replace default log-out URL.
 *
 * @wp-hook logout_url
 * @param   string $logout_url
 * @param   string $redirect
 * @return  string
 */
function t5_custom_logout_url( $logout_url, $redirect )
{
    $url = add_query_arg( 'logout', 1, home_url( '/' ) );

    if ( ! empty ( $redirect ) )
        $url = add_query_arg( 'redirect', $redirect, $url );

    return $url;
}

/**
 * Log the user out.
 *
 * @wp-hook wp_loaded
 * @return  void
 */
function t5_custom_logout_action()
{
    if ( ! isset ( $_GET['logout'] ) )
        return;

    wp_logout();

    $loc = isset ( $_GET['redirect'] ) ? $_GET['redirect'] : home_url( '/' );
    wp_redirect( $loc );
    exit;
}

Comme plugin sur GitHub , parce que c'est territoire du plugin pur . Et vous ne pouvez pasvraiment cacher WordPress.


il ajoute également title = à la fin de l'URL

Je suppose que le problème est le balisage comme ceci:

<a href="<?php echo wp_logout_url(); ?> title="Log out">Log out</a>

Notez le " manquant.

5
fuxia