Skip to content

Instantly share code, notes, and snippets.

@kloon
Created November 5, 2012 06:24
Show Gist options
  • Star 14 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save kloon/4015657 to your computer and use it in GitHub Desktop.
Save kloon/4015657 to your computer and use it in GitHub Desktop.
WooCommerce add login/logout buttons to wordpress menu
add_filter( 'wp_nav_menu_items', 'add_loginout_link', 10, 2 );
function add_loginout_link( $items, $args ) {
if (is_user_logged_in() && $args->theme_location == 'primary') {
$items .= '<li><a href="'. wp_logout_url( get_permalink( woocommerce_get_page_id( 'myaccount' ) ) ) .'">Log Out</a></li>';
}
elseif (!is_user_logged_in() && $args->theme_location == 'primary') {
$items .= '<li><a href="' . get_permalink( woocommerce_get_page_id( 'myaccount' ) ) . '">Log In</a></li>';
}
return $items;
}
@klihelp
Copy link

klihelp commented Mar 2, 2014

use wc_get_page_id(), because woocommerce_get_page_id() deprecated

@cinghaman
Copy link

Where exactly to add this function - becoz i added it into functions file and it says wc_get_page_id function not defined

@cinghaman
Copy link

ok i think i am using older version of woo it works thanks

@thinkluke
Copy link

I just use:
Logout Link: /?customer-logout=true
Login: /my-account/

@ajit1
Copy link

ajit1 commented Jan 30, 2015

Thanks, more filtered
Add to functions.php
add_filter( 'wp_nav_menu_items', 'add_loginout_link', 10, 2 );
function add_loginout_link( $items, $args ) {
if (is_user_logged_in()) {
$items .= '

  • Log out
  • ';
    }
    elseif (!is_user_logged_in()) {
    $items .= '
  • Log in
  • ';
    }
    return $items;
    }

    @joekender
    Copy link

    Hi ait1,

    Can you help me?

    In my theme (replay theme (themeforest)) my login logout menu for woocomerce dont work... :(::(

    @ZCweb
    Copy link

    ZCweb commented Aug 31, 2017

    I'd like the Login and logout to go in a dropdown menu. Not to be added on to the menu as the last list item. How can I control where it goes? My last list item is 'My Account' and I want it under there as a dropdown.

    @deeman
    Copy link

    deeman commented Aug 1, 2020

    Nice tip, Is it possible to create a shortcode as well?

    @ssrajput421
    Copy link

    I just use:
    Logout Link: /?customer-logout=true
    Login: /my-account/

    But then it redirects to the dashboard and asks for confirmation if you really want to log out

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment