Beberapa jawaban yang diberikan bisa baik-baik saja di sebagian besar situasi tetapi saya pikir tidak ada satupun dari mereka yang memberikan garansi untuk melakukan apa yang diminta karena tidak ada jawaban yang memeriksa peran pengguna, mereka memeriksa kemampuan dan kemampuan yang dapat ditetapkan dan dihapus dari peran formulir. Jadi, untuk memberikan jawaban yang tepat, peran pengguna harus diperiksa, bukan kemampuan:
add_action( 'admin_init', 'allow_admin_area_to_admins_only');
function allow_admin_area_to_admins_only() {
if( defined('DOING_AJAX') && DOING_AJAX ) {
//Allow ajax calls
return;
}
$user = wp_get_current_user();
if( empty( $user ) || !in_array( "administrator", (array) $user->roles ) ) {
//Redirect to main page if no user or if the user has no "administrator" role assigned
wp_redirect( get_site_url( ) );
exit();
}
}
Jika Anda ingin memastikan bahwa pengguna memiliki kemampuan "manage_options", Anda bisa. Bahkan, ini adalah opsi terbaik dalam banyak kasus. Meskipun kemampuan ini dikaitkan secara default ke pengguna administrator, kemampuan dapat dihapus dari peran admin atau dapat ditugaskan ke peran pengguna lain. Itulah sebabnya, dalam kebanyakan kasus, memeriksa apa yang bisa atau tidak bisa dilakukan pengguna lebih baik daripada memeriksa peran pengguna. Jadi, dalam banyak kasus memeriksa kemampuan harus menjadi cara yang dipilih tetapi Anda harus memiliki konsep ini jelas dan memilih opsi terbaik untuk situasi dan tujuan Anda:
add_action( 'admin_init', 'admin_area_for_manage_options_only');
function admin_area_for_manage_options_only() {
if( defined('DOING_AJAX') && DOING_AJAX ) {
//Allow ajax calls
return;
}
if( ! current_user_can( "manage_options" ) ) {
//Redirect to main page if the user has no "manage_options" capability
wp_redirect( get_site_url( ) );
exit();
}
}