pcguy
Goto Top

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?

Content-ID: 391465

Url: https://administrator.de/contentid/391465

Ausgedruckt am: 24.11.2024 um 18:11 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