I'm using custom menu for login/logout here below is my code:

if (is_user_logged_in()) {
  $user = wp_get_current_user();
  echo 'Welcome <strong><a href="http://kolkataonwheelsmagazine.com/wp-admin/index.php" >'.$user->user_firstname.'</a></strong>
  | <a  href="http://kolkataonwheelsmagazine.com/wp-login.php?action=logout&quot;">Logout</a>';
} else { ?>
  <strong><?php wp_loginout(); ?></strong>
  or <a href="<?php bloginfo('url') ?>/wp-login.php?action=register"> <strong>Register</strong></a>
<?php }?>

but problem is :

redirect to login page not current page...

I want it should go to home page after logout. Please help me...

6 Answers 6


function auto_redirect_after_logout(){
  wp_safe_redirect( home_url() );

This will do the trick.


If you only want to modify logout and not login, then use wp_logout_url(). Conversely you can use wp_login_url() for just the login URL.

Example of an logout link:

<a href="<?php echo wp_logout_url( home_url() ); ?>" title="Logout">Logout</a>

You can still use the function wp_loginout() but the redirect will work on both login and out. But if that is okay it could look like this:

<?php wp_loginout( home_url() ); ?>
  • Thanx Pontus, I hv tried with your code...but its not workin it goes to 404.php page... It is my second post but it's not solved my problem... plz help me... Jul 10, 2012 at 14:57
  • try get_bloginfo('url') in place of home_url() Jan 30, 2019 at 9:38

Pontus Abrahamsson is right, that is a legal code, but here is another one that I'm using in my theme.

<a href="<?php echo wp_logout_url('$index.php'); ?>">Logout</a>
  • Works for me with '/' for homepage, but not sure what $ means here
    – Fanky
    Jun 29, 2020 at 13:15

Since Wordpress 4.2.0 a logout hook filter was introduced logout_redirect.

apply_filters( 'logout_redirect', string $redirect_to, string $requested_redirect_to, WP_User $user )

Filters the log out redirect URL.

Parameter Description
$redirect_to (string) The redirect destination URL.
$requested_redirect_to (string) The requested redirect destination URL passed as a parameter.
$user (WP_User) The WP_User object for the user that's logging out.

Simple use case scenario

add_filter( 'logout_redirect', function() {
    return esc_url( home_url() );
} ); ?>

Anonymous functions used, PHP > 5.3required

Learn more

  • The same apply for logins, with a login_redirect introduced in 3.0.0.

Since WordPress 4.2.0 you can just add:

add_filter('logout_redirect', 'get_home_url');

Try this

add_action('check_admin_referer', 'pfwp_logout_without_confirm', 10, 2);
function pfwp_logout_without_confirm($action, $result)
     * Allow logout without confirmation
    if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
        $redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : get_permalink( wp_logout_url() )// or custom url;
        $location = str_replace('&amp;', '&', wp_logout_url($redirect_to));
        header("Location: $location");

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.