CODE SNIPPETS

Personalizar o menu do WooCommerce: Exiba o nome do usuário logado ou ‘Entrar’ para visitantes

Início / Code Snippets / Personalizar o menu do WooCommerce: Exiba o nome do usuário logado ou ‘Entrar’ para visitantes

Esta função verifica se o usuário está logado e substitui o placeholder {{username}} no título do item do menu pelo primeiro nome de exibição do usuário. Se o usuário não estiver logado, o placeholder é substituído por “Entrar” e o link direciona para a página de login.

Caso deseje que o nome completo seja exibido, você precisará substituir as seguintes linhas:

//remover
$partes_nome = explode(' ', $current_user->display_name);
$primeiro_nome = $partes_nome[0];

//adicionar
$nome_completo = $current_user->display_name;

function exibir_primeiro_nome_usuario_no_menu( $menu_items ) {
    global $current_user;

    if ( is_user_logged_in() ) {
        foreach ( $menu_items as $menu_item ) {
            if ( strpos( $menu_item->title, '{{username}}' ) !== false ) {
                if ( $current_user->display_name ) {

                    // Pega o primeiro nome do nome de exibição do usuário
                    $partes_nome = explode(' ', $current_user->display_name);
                    $primeiro_nome = $partes_nome[0];
                } else {
                    $primeiro_nome = '';
                }

                // Substitui o placeholder {{username}} por "Olá, primeiro_nome"
                $menu_item->title = str_replace( '{{username}}', 'Olá, ' . $primeiro_nome, $menu_item->title );
            }
        }
    } else {
        foreach ( $menu_items as $menu_item ) {
            if ( strpos( $menu_item->title, '{{username}}' ) !== false ) {

                // Define o título do item de menu como "Entrar"
                $menu_item->title = 'Entrar';

                // Define a URL do item de menu para a página de login
                $menu_item->url = wp_login_url(); // URL da página de login do WordPress
            }
        }
    }
    return $menu_items;
}

add_filter( 'wp_nav_menu_objects', 'exibir_primeiro_nome_usuario_no_menu' );