WordPress Check User Rollenfunktion (mehrere Rollen)?

Ich spiele mit der function check_user_role, die von AppThemes zusammengestellt wurde; wie in der WordPress current_user_can codex Seite erwähnt. Im AppThemes-Tutorial-Code wird auf Folgendes verwiesen:

// example use for the current user if ( appthemes_check_user_role( 'customer' ) _e( "You've got access dude!", 'appthemes' ); else _e( "Sorry man, no luck.", 'appthemes' ); 

Ich möchte das mit mehr als einer Benutzerrolle (dh ‘customrole’, ‘subscriber’) arbeiten lassen, aber ich habe nicht viel Glück, ohne etwas zu erstellen, das sich wie repetitiver Code anfühlt.

Der einzige Weg, wie ich es zum Laufen brachte, war etwas zu tun wie:

 if (appthemes_check_user_role( 'customrole' ) || appthemes_check_user_role( 'author' ) ) { _e( "You've got access dude!", 'appthemes' ); } else { _e( "Sorry man, no luck.", 'appthemes' ); } 

Oder dieses:

 if (appthemes_check_user_role( 'customrole' ) ) { _e( "You've got access dude!", 'appthemes' ); } if (appthemes_check_user_role( 'author' )) { _e( "You've got access dude!", 'appthemes' ); }else{ _e( "Sorry man, no luck.", 'appthemes' ); } 

Ich habe mich gefragt, ob jemand Vorschläge zur Vereinfachung des Codes für die Verwendung mit mehreren Rollen hatte?

Solutions Collecting From Web of "WordPress Check User Rollenfunktion (mehrere Rollen)?"

 if ( wpse_99666_check_user_roles( array( 'customrole', 'author' ) ) ) _e( "You've got access dude!", 'appthemes' ); else _e( 'Sorry man, no luck.', 'appthemes' ); /** * Checks if a particular user has one or more roles. * * Returns true on first matching role. Returns false if no roles match. * * @uses get_userdata() * @uses wp_get_current_user() * * @param array|string $roles Role name (or array of names). * @param int $user_id (Optional) The ID of a user. Defaults to the current user. * @return bool */ function wpse_99666_check_user_roles( $roles, $user_id = null ) { if ( is_numeric( $user_id ) ) $user = get_userdata( $user_id ); else $user = wp_get_current_user(); if ( empty( $user ) ) return false; $user_roles = (array) $user->roles; foreach ( (array) $roles as $role ) { if ( in_array( $role, $user_roles ) ) return true; } return false; }