Leave a Reply

6 comments

  1. You can filter 'logout_url' and return a custom value if you are in the admin area:

    add_filter( 'logout_url', 'wpse_58453_logout_url' );
    function wpse_58453_logout_url( $default ) 
    {
        // set your URL here
        return is_admin() ? 'http://example.com/custom' : $default;
    }
    
  2. I think you should add rewrite rule in your htaccess file like this.

    RewriteRule ^logout/(.*) /wp-login.php?action=logout&_wpnonce=$1 [QSA,L]
    
  3.     function wp_loginout( $redirect = '', $echo = true ) {
        if ( ! is_user_logged_in() ) {
            $link = '<a href="' . esc_url( wp_login_url( $redirect ) ) . '">' . __( 'Log in' ) . '</a>';
        } else {
            $link = '<a href="' . esc_url( wp_logout_url( $redirect ) ) . '">' . __( 'Log out' ) . '</a>';
        }
     
        if ( $echo ) {
            /**
             * Filters the HTML output for the Log In/Log Out link.
             *
             * @since 1.5.0
             *
             * @param string $link The HTML link content.
             */
            echo apply_filters( 'loginout', $link );
        } else {
            /** This filter is documented in wp-includes/general-template.php */
            return apply_filters( 'loginout', $link );
        }
    }
    

    Displays a link, which allows users to navigate to the Log In page to log in or log out depending on whether they are currently logged in.

  4. A very interesting solution is to create a Page “Logout” and then create the template of it in main folder of your theme by file page-{your-logout-slug}.php. And here is the simplest code of this page.

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

    Add argument to site_url() of any slug or leave empty to be logged out to your home page. It’s good because by using any php code you can do many things before you will be logged out.