Inserir o nome de usuário logado no menu do WordPress

Inserir o nome de usuário logado no menu do WordPress

Postado em

24 de agosto de 2020

Tempo de leitura

4 minutos

Visualizações

703

Muitas pessoas ao criarem uma loja virtual no WordPress / Woocommerce acaba esquecendo ou não se atenta em colocar no menu, ou em qualquer outro lugar o nome do usuário com uma mensagem de saudação para o seu cliente.

Por exemplo:

Ao logar em lojas virtuais, aparece no menu conforme o exemplo abaixo:

nome-usuario-menu

Tive essa necessidade com um cliente, mediante isso fizemos essa pequena integração, SEM PLUGIN.

Então vamos ao código.

Acesse o arquivo functions.php do seu tema, aconselho utilizar em um tema filho, se não tiver opção e tiver que usar no tema pai, faça um backup antes, só por segurança mesmo.

function pointcom_user_name_menu( $pointcom_menu_item ) {
    
    foreach ( $pointcom_menu_item as $menu_item ) {

        if ( strpos($menu_item->title, '#saudacao#') !== false) {
            $menu_item->title =  str_replace("#saudacao#",  "Olá", $menu_item->title);
        }

        if ( strpos($menu_item->title, '#nome_usuario#') !== false) {
            $menu_item->title =  str_replace("#nome_usuario#",  wp_get_current_user()->user_firstname, $menu_item->title);
        }

        if ( strpos($menu_item->title, '#sobrenome_usuario#') !== false) {
            $menu_item->title =  str_replace("#sobrenome_usuario#",  wp_get_current_user()->user_lastname, $menu_item->title);
        }
    }


    return $pointcom_menu_item;
}
add_filter( 'wp_nav_menu_objects', 'pointcom_user_name_menu' );

No código acima, criamos uma função chamada pointco_user_name_menu e nela passamos o parametro $pointcom_menu_item criamos um loop (foreach) na qual declarmos 3 argumentos:

1 – #saudacao# – me retorna a mensagem de saudação (Olá,)
2 – #nome_usuario# – me retorna o primeiro nome o usuário
3 – #sobrenome_usuario# – me retorna o segundo nome do usuário

A função foi adicionado o filtro (add_filter) wp_nav_menu_objects . (consulte no codex do WordPress)

Agora vamos criar outra função dizendo que, se o usuário não estiver logado ele vai esconder o menu.

No administrador em Aparência>Menus vou acessar meu menu e vou inserir nele uma classe chamada menu_login, essa classe vai ser usada apenas para verificação, ou seja, se ela existir (usuário logado) apresenta os dados, se ela não existir (usuário deslogado) esconderá os dados.

Vamos ao código:

function pointcom_exclude_items_menu( $items, $menu, $args )
{
    if (is_user_logged_in() == false) {
        foreach ($items as $key => $item) {
            if (in_array('menu_login', $item->classes)) {
                unset($items[$key]);
            }
        }
    }

    return $items;
}

add_filter( 'wp_get_nav_menu_items', 'pointcom_exclude_items_menu', null, 3 );

Desta forma ficará assim em Aparência>menus>seu menu
menu-admin

1 – dados da primeira função

2 – dados da segunda função

De forma simples ativamos o menu com o nome do usuário logado em nosso WordPress..

Gostou? compartilhe nas redes!! ;)

Deixe seu comentário