Kategoriler
WordPress

WordPress kullanıcı rolüne göre fonksiyon

WordPress sitesinde birden fazla kullanıcı var ise veya üyelik ile çalışan bir sistemde çalışıyor iseniz işinize yarayabilecek bir kullanım.

Birden fazla kullanıcı ve bu kullanıcılara atanan birden fazla farklı rollere sahip bir WordPress siteminde çalışıyor iseniz bu kullanıcılara yönelik farklı uygulamalar ve fonksiyonlar yazmak isteyebilirsiniz, bu örnek fonksiyon ile bunu kolayca yapabileceğinizi görebilirsiniz.

Öncelikle sitedeki kullanıcı rollerini bulalım:

/* user rolle getir / get_user_role( $userID ); */
function kullanici_rolu_getir($user_id){
    global $wp_roles;
    $roles = array();
    $user = new WP_User( $user_id );
    if ( !empty( $user->roles ) && is_array( $user->roles ) ){
    foreach ( $user->roles as $role )
        $roles[] .= translate_user_role( $role );
   }
    return implode(', ',$roles);
}

Yukarıdaki fonksiyonda sistemdeki kullanıcı rollerini çekmiş oluyoruz ve istediğimiz gibi kullanabiliriz, örnek aşağıdaki gibi: $userRoles = kullanici_rolu_getir( get_current_user_id() );

/* WP panelde adminler ve editorler için uyarı */ 
add_action('admin_footer', function(){
	global $user;
	$userRoles = kullanici_rolu_getir( get_current_user_id() );
	if ( ! defined('DOING_AJAX') || ! DOING_AJAX ){
		if (strpos($userRoles, 'administrator') !== false) :
			echo "<script>alert('Merhaba admin kardeş!');</script>";
		elseif (strpos($userRoles, 'editor') !== false) :
			echo "<script>alert('Merhaba editor dostum!');</script>";
		endif;
	}
});

Tabi istenirse sitenin herhangi bir yerinde herhangi bir şey için de kullanılabilir.

Normal şartlarda istenirse role değil aşağıdaki gibi kullanıcıya veya kullanıcı giriş yapmış ise gibi fonksiyonlar da vardır çok kullanıcılı bir site değil ise kullanılabilir:

is_user_logged_in() //Giriş yapmış kullanıcı ise
is_user_admin() //Admin ise
is_super_admin() //MU sitelerde super admin ise
current_user_can( 'manage_options' ) //manage_options yapabiliyorsa

Kaynaklar:

https://developer.wordpress.org/reference/functions/wp_roles/
https://developer.wordpress.org/reference/functions/get_current_user_id/
https://developer.wordpress.org/reference/functions/current_user_can/
https://developer.wordpress.org/reference/functions/is_admin/
https://developer.wordpress.org/reference/functions/is_super_admin/

Kolay gelsin.