pcguy

WP Begrüssung mit Rolle und Name

Hallo zusammen, ich habe eine Funktion in meinen WP Child, die die User an der gewünschten Seitenposition begrüsst.
Das funktioniert soweit gut:

function my_hallo() {               
  	$current_user = wp_get_current_user();
    
    echo '<div class="hallo"> Hallo <strong>';				  
	if ( is_user_logged_in() ) {
    echo $current_user->user_firstname.' '.$current_user->user_lastname;  
	} else {
    echo 'Gast <a href="/login" style="color:red"> Bitte loggen Sie sich ein </a>';		  
	}
	
	echo '</strong> </div>';  
					
}
add_shortcode('my_hallo', 'my_hallo');  



Nun möchte ich das ganze erweitern und die Rolle einbinden:
Userrolle == Admin " Hallo Admin " Vorname Name
Userrole == Nicht Admin "Hallo User" Vorname Name


Wie kann ich das am einfachsten verwirklichen?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 391465

Url: https://administrator.de/forum/wp-begruessung-mit-rolle-und-name-391465.html

Ausgedruckt am: 31.05.2025 um 07:05 Uhr

godlie
godlie 02.11.2018, aktualisiert am 03.11.2018 um 15:29:01 Uhr
Goto Top
Hallo,

das geht recht einfach über die Metadata vom Benutzer.
<?php

// Get the user object.
$user_meta = get_userdata( $current_user->ID );

// Get all the user roles as an array.
$user_roles = $user_meta->roles;

// Check if the role you're interested in, is present in the array. 
if ( in_array( 'administrator', $user_roles, true ) ) {  
    // Do something.
    echo 'YES, User is a subscriber';  
}
pcguy
pcguy 02.11.2018 um 15:39:50 Uhr
Goto Top
besten dank, ich habe das so versucht zu integrieren, jedoch ist da noch ein Fehler vorhanden:


function my_ahoi() {               
  	$current_user = wp_get_current_user();
	$user       = get_userdata( $current_iuser->ID );
	$user_roles = $user_meta->roles; 
    
    echo '<div class="myahoi"> Ahoi';		  
	
	if ( in_array( 'admin' or ' stv ', $user_roles, true ) ) 	  
		{ echo 'team'; }  
	else
	         {echo 'Gast'; }  
	
	echo ' <strong>';		  
	if ( is_user_logged_in() ) {
    echo $current_user->user_firstname.' '.$current_user->user_lastname;  
	} else {
    echo 'Gast <a href="/login" style="color:red"> Bitte loggen Sie sich ein </a>';		  
	}
	
	echo '</strong> </div>';  
					
}
add_shortcode('my_ahoi', 'my_ahoi');  

was übersehe ich da?
godlie
godlie 03.11.2018 um 15:31:00 Uhr
Goto Top
Hi,

mir sind da 2 fehler beim kopieren passiert, hab nun meinen code oben angepasst, das "true" im in_array() kann man sich auch sparen.

Das was du mit dem OR versuchst wird nicht funktionieren.
if ( in_array( 'admin', $user_roles ) || in_array('stv', $user_roles ))   
pcguy
pcguy 07.11.2018 um 05:03:57 Uhr
Goto Top
besten Dank face-smile

In Deiner Version kommt bei mir, ein Fehler, wenn der User nicht angemeldet ist:
Warning: in_array() expects parameter 2 to be array, null given in .....

Sorry, ich bin nicht so PHP bewandert, ich dachte das sei einfacher zu lösen

LG
godlie
Lösung godlie 07.11.2018 um 10:15:03 Uhr
Goto Top
Hallo,

ja das ist klar das er da meckert, lässt sich aber einfach abfangen.

if(is_array($user_roles)) {
  // Do check for UserRole
} else {
  // Not Logged In
}
pcguy
pcguy 09.11.2018 um 10:24:02 Uhr
Goto Top
Besten dank, im Moment läuft es einwandfrei face-smile