Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change account menu wording if user is "logged in" in WooCommerce

I'm using WooCommerce with a child theme of Storefront.

I have a secondary menu named "Desktop secondary top right EN" where there's a link to "my account".

My question is: how to change the "my account" item wording if the customer is logged in ?

I'd like to do this without having to create another menu in the back office and without installing a plugin of course.

enter image description here

enter image description here

I should be able to use something similar to:

function menu_add_admin_buttons( $items, $args ) {
  if( 'secondary' == $args['theme_location'] ) {
    $btn_format = '<li><a href="%s">%s</a></li>';
        if ( is_user_logged_in() ) {
            $btn = sprintf($btn_format, admin_url('profile.php'), __('Your Profile') );
        } else {
            $btn = sprintf($btn_format, wp_login_url(), __('Log In') );
        }
        return $items . $btn;
    }
}
$menu_filter = 'wp_nav_menu_' . sanitize_title("Desktop secondary top right EN") . '_items';
add_filter($menu_filter, 'menu_add_admin_buttons', 20, 2);

but it has to be customized to my needs. How can I do this?

like image 797
Louis Avatar asked Oct 31 '25 05:10

Louis


1 Answers

You can try another wordpress hook wp_nav_menu_items:

function menu_add_admin_buttons( $items, $args ) {
    $btn = '';

    if ( $args->theme_location === 'secondary' ) {
        $btn_format = '<li><a href="%s">%s</a></li>';
        if ( is_user_logged_in() ) {
            $btn = sprintf($btn_format, admin_url( 'profile.php' ), __( 'Your Profile' ) );
        } else {
            $btn = sprintf($btn_format, wp_login_url(), __('Log In') );
        }
    }

    return sprintf( '%s%s', $items, $btn );
}
add_filter( 'wp_nav_menu_items','menu_add_admin_buttons', 10, 2 );

Could you please to check the documentation.

like image 112
Dmitry Avatar answered Nov 02 '25 20:11

Dmitry