Mise à jour : WordPress 2.7 a introduit un nouveau template tag pour la déconnexion.

J'ai eu besoin de créer un bloc permettant aux utilisateurs d'un blog de gérer leur connexion/déconnexion directement depuis le front-end, c'est-à-dire qu'il a fallu intégrer un formulaire au thème dans ce but. Mon collègue Amaury m'a fillé un petit coup de code.

Le code se divise en 2 parties : une pour le mode déconnecté et une pour le mode connecté. Si l’utilisateur n’est pas connecté, on affiche un formulaire de connexion, sinon on affiche un lien de déconnexion (rien de plus logique).

Le formulaire ci-dessous est configuré pour rediriger le visiteur sur la page qu'il est déjà occupé de visiter (concrètement, il reste là où il est).

<?php global $user_ID, $user_identity, $user_login; get_currentuserinfo(); if (!$user_ID): // Non connecte ?>
<form method="post" id="loginform" action="<?php bloginfo(’home’); ?>/wp-login.php">
    <div>
        <input type="text" value="<?php echo wp_specialchars(stripslashes($user_login), 1); ?>" name="log" id="login" />
        <input type="password" value="" name="pwd" id="password" />
        <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
        <input type="hidden" name="rememberme" value="forever" />
        <input type="submit" id="loginsubmit" value="OK" />
    </div>
</form>      
<?php else : // Connecte ?>
<div id="user_connected">
    <span><?php echo wp_specialchars(stripslashes($user_identity), 1); ?></span>
    <a href="http://dotsandthoughts.be/<?php echo wp_logout_urlurlencode$_SERVER['REQUEST_URI']">&lt;?php echo wp_logout_urlurlencode$_SERVER['REQUEST_URI']</a>); ?> text: Déconnexion)
</div>
<?php endif; ?>

Vous pouvez voir le résultat sur BeFox.be, menu de connexion en haut à droite.