Soporte » Plugins y Hacks » Nombre del rol (no la ID) – Sidebar Login Widget

  • Resuelto fornarina

    (@fornarina)



    Hola, tenía una consulta de código con respecto al plugin “Sidebar Login Widget”.

    Quiero editar el código para que, al estar conectado, me aperezca el nombre del rol del usuario. Pero el nombre, no el ID.

    Es decir, por ejemplo, en el caso de administrador, el nombre es “Administrador” pero el ID o Slug es “Administrator”. En otro caso, he subido un rol que se llama “Socio registrado” y el ID o slug es “socio” a secas.

    Es decir, yo lo que quiero es que me aparezca el nombre del rango, no la palabra identicativa a nivel de código. Espero explicarme bien.

    Pongo una captura de una imagen, para que veais a lo que me refiero (no sé porque no he sido capaz de copiar el código).

    Código

    Lo que necesitaría saber el el código que llama al nombre del rol, no al ID.

    • Este debate fue modificado hace 2 meses, 1 semana por  fornarina.
Viendo 5 respuestas - 1 de 5 (de 5 total)
  • Hola @fornarina. Prueba con esto: en el function.php de tu tema

    
    /**
     * Muestra el Rol  
     * No hay rol, no devuelve nada.
     *
     * @return string El nombre común del rol.
     **/
    function get_role_common_name() {
        global $wp_roles;
    
        $current_user = wp_get_current_user();
        $roles = $current_user->roles;
        $role = array_shift( $roles );
    
        return isset( $wp_roles->role_names[ $role ] ) ? translate_user_role( $wp_roles->role_names[ $role ] ) : FALSE;
    }
    

    Luego donde quieras colocarlo en tu plantilla:

    
    <?php get_role_common_name(); ?>
    

    Saludos

    @cehojac gracias por contestar. Algo estoy poniendo mal en el codigo del plugin (el de function.php ya lo he puesto) porque cuando incluyo el codigo para colocar el nombre del rol, de error toda la web. Como que me he comido algun simbolo o estoy sustituyendo mal el codigo.

    Si no te importa, podrías indicarme en ese codigo ¿cómo debería ponerlo exactamente?

    La linea donde aparece actualmente la ID del rol es esta:

    echo '<p>';
    						_e('Estás conectado con rango de ', 'ttslw_text_domain');
    						echo '<strong>' . ucfirst( implode(', ', $user_info->roles)) . '</strong> <br>';
    						if($chk_show_postcount=='on'){
    							 _e('Posts by you','ttslw_text_domain'); echo ': '. count_user_posts( $user_info->ID ).'<br>';
    						}

    Este es el código completo:

    /*Check if user is logged in then show user information and logout,dashboardand profile link*/
    			if (is_user_logged_in()) {
    				
    					?>
    					<div class="sidebar-login-info">
    					<?php
    					
    					if ($chk_show_avatar == "on"){
    						$show_avatar = isset( $show_avatar ) ? $show_avatar : 1;
    						if ( $show_avatar == 1 )
    							echo '<div class="avatar_container">' . get_avatar( $user_info->ID, apply_filters( 'sidebar_login_widget_avatar_size', 45 ) ) . '</div>';
    					}
    					echo '<p>';
    						_e('Estás conectado con rango de ', 'ttslw_text_domain');
    						echo '<strong>' . ucfirst( implode(', ', $user_info->roles)) . '</strong> <br>';
    						if($chk_show_postcount=='on'){
    							 _e('Posts by you','ttslw_text_domain'); echo ': '. count_user_posts( $user_info->ID ).'<br>';
    						}
    					echo "</p>";
    					?>
    					
    					<ul id="<?php if($chk_show_avatar=='on') echo 'sidebar-login-links';else echo 'sidebar-login-links-left'; ?>">
    						
    						<?php if($chk_show_dash == 'on'){ ?>
    							<li><a href="<?php echo admin_url() ?>"><?php _e( 'Dashboard' , 'ttslw_text_domain' )//_e( 'Dashboard' , 'default' ) ?> </a>|</li>
    						<?php } ?>
    						<?php if($chk_show_profile == 'on'){ ?>
    							<li><a href="<?php echo admin_url() ?>profile.php"><?php _e( 'Perfil' , 'ttslw_text_domain' )//_e( 'Profile' , 'tie' ) ?> </a>|</li>
    						<?php } ?>	
    							<li><a href="<?php echo wp_logout_url($redirect); ?>"><?php _e( 'Cerrar sesión' , 'ttslw_text_domain' )//_e( 'Logout' , 'tie' ) ?> </a></li>
    												
    					</ul>
    					</div>		
    		
    					
    					
    					<?php
    			}
    • Esta respuesta fue modificada hace 2 meses, 1 semana por  fornarina.

    @fornarina reemplaza

    
    _e('Estás conectado con rango de ', 'ttslw_text_domain');
    						echo '<strong>' . ucfirst( implode(', ', $user_info->roles)) . '</strong> <br>';
    

    por

    
    _e('Estás conectado con rango de ', 'ttslw_text_domain');
    						echo '<strong>' . ucfirst( get_role_common_name()) . '</strong> <br>';
    

    @cehojac PERFECTO!! Muchísimas gracias por tu ayuda 🙂

    Un saludo

    @fornarina de nada un placer ayudar ñ_ñ

Viendo 5 respuestas - 1 de 5 (de 5 total)
  • Debes estar registrado para responder a este tema.