Create a Login/Logout Link in WordPress

To create a login/logout link in WordPress you can use a snippet of php code using the wp_logout_url function, you can also set the logout URL to be an external site to your own.

<?php if (is_user_logged_in()) : ?>
    <a href="<?php echo wp_logout_url(get_permalink()); ?>">Logout</a>
<?php else : ?>
    <a href="<?php echo wp_login_url(get_permalink()); ?>">Login</a>
<?php endif;?>

If you just want a logout link only:

<?php if (is_user_logged_in()) : ?>
    <a href="<?php echo wp_logout_url(get_permalink()); ?>">Logout</a>
<?php endif;?>

If you just want a login link only:

<?php if (! is_user_logged_in()) : ?>
    <a href="<?php echo wp_logout_url(get_permalink()); ?>">Login</a>
<?php endif;?>

You can add this anywhere in your theme template files – if you want to add as a widget – you need to enable PHP for widgets.

To set the link when logging out to some external URL you can change what gets passed into the wp_logout_url() function, for example…

wp_logout_url( 'http://somewhereelse.com' );

But before it will work you need to add it to a list of allowed URLs, so in your functions.php file add…

add_filter('allowed_redirect_hosts','allow_ms_parent_redirect');
function allow_ms_parent_redirect($allowed) {
 $allowed[] = 'somewhereelse.com';
 return $allowed;
}

Now the logout will pass you onto another site.

9 Comments

  1. kunal on September 8, 2017 at 6:53 am

    Thanks! you solved my problem

  2. Bill G on January 19, 2017 at 9:23 pm

    This is pretty vague… “anywhere in your Theme Template Files”

    Which file? under which directory?

  3. Gabi on October 12, 2016 at 4:52 pm

    Hi
    How do I add the logout link to the primary menu only?

  4. Jennifer on August 15, 2016 at 5:27 pm

    Hi – Thanks for this information. Works great:) Can you tell me how I would customize the logout text?

    Jen

  5. Richard on July 28, 2016 at 12:57 pm

    What if you want to redirect to a “logged out” page, after the logout command has run ?

  6. john on August 27, 2015 at 12:34 pm

    thank u , it woks fine

  7. Christian Schäfer on May 13, 2015 at 9:45 am

    Worked fine! Thanks for the snippet – made my day ūüôā

Leave a Comment