Conrado Diório

Foto de perfil do usuário no menu do tema WordPress

Saiba como inserir a foto no menu do usuário logado em seu site WordPress.

Usuário logado com foto.

1º Passo é adicionar em Aparência > Menus um link personalizado, com um rótulo único. No meu caso escolhi {{user-avatar}}

O menu então ficará assim:

No meu caso o menu tem sub-itens, mas não é necessário.

2º Passo é adicionar o seguinte código no functions.php do seu tema:

function foto_menu($items, $args){



    //Foto do usuário

    //Retorna uma imagem padrão caso não haja uma foto escolhida ou usuário não está logado.

    //30 é o tamanho da foto em px.

    $img_user = get_avatar(get_current_user_id(), 30, '', 'foto usuario', '');



    //Altera o rótulo do menu pela foto.

    $items = str_replace('{{user-avatar}}', $img_user, $items);



    return $items;

}



add_filter('wp_nav_menu_items', 'foto_menu', 10, 2);
Usuário não logado ou sem foto.
Usuário logado com foto.

Dica: use o plugin WP User Avatar para gerenciar os avatares dos usuários e a foto padrão para quando o usuário não estiver logado/sem foto.



Bônus: Imagem e nome do usuário no menu do WordPress:

function foto_nome_menu($items, $args){

    $current_user = wp_get_current_user();

    //Foto do usuário
    //Retorna uma imagem padrão caso não haja uma foto escolhida ou usuário não está logado.
    //30 é o tamanho da foto em px.
    $img_user = get_avatar($current_user->ID, 30, '', 'foto usuario', '');

    //Altera o rótulo do menu pela foto.
    $items = str_replace('{{user-avatar}}', $img_user, $items);

    //Nome do usuário
    $items = str_replace('{{user-name}}', $current_user->user_firstname, $items);

    if(is_user_logged_in()){
 
        //Nome do usuário
        $items = str_replace('{{user-name}}', $current_user->user_firstname, $items);

    }else{

        //Apaga a tag {{user-name}} caso nenhum usuário esteja logado.
        $items = str_replace('{{user-name}}', '', $items);

    }

    return $items;

}

add_filter('wp_nav_menu_items', 'foto_nome_menu', 10, 2);
Sair da versão mobile