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-Key: 391465

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

Printed on: April 18, 2024 at 18:04 o'clock

Member: godlie
godlie Nov 02, 2018, updated at Nov 03, 2018 at 14:29:01 (UTC)
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';  
}
Member: pcguy
pcguy Nov 02, 2018 at 14:39:50 (UTC)
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?
Member: godlie
godlie Nov 03, 2018 at 14:31:00 (UTC)
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 ))   
Member: pcguy
pcguy Nov 07, 2018 at 04:03:57 (UTC)
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
Member: godlie
Solution godlie Nov 07, 2018 at 09:15:03 (UTC)
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
}
Member: pcguy
pcguy Nov 09, 2018 at 09:24:02 (UTC)
Goto Top
Besten dank, im Moment läuft es einwandfrei face-smile