特定のユーザーロールがダッシュボード http://www.openeye.net/wp-admin/ にアクセスできないようにしたいのですが。私はユーザープロフィールをサイト上で見ることができる新しいページに移動して作り直しました。これをどのようにして行うのでしょうか。
購読者と寄稿者を管理者から締め出すには:
function wpse23007_redirect(){
if( is_admin() && !defined('DOING_AJAX') && ( current_user_can('subscriber') || current_user_can('contributor') ) ){
wp_redirect(home_url());
exit;
}
}
add_action('init','wpse23007_redirect');
それが役立つことを願っています。すべての役割は、その役割の名前である機能をユーザーに付与します。そのため、機能として任意の役割名を使用できます。
//If User Roll is Subscriber, It can not login in Dashboard
function wpse23007_redirect()
{
if( is_admin() && !defined('DOING_AJAX') && current_user_can('subscriber') )
{
wp_logout();
wp_redirect(home_url());
exit;
}
}
add_action('init','wpse23007_redirect');
はい、current_user_can($ capability)関数を使う必要があります。これが公式のWordPressリファレンスです。 https://codex.wordpress.org/Function_Reference/current_user_can
add_action('init', function(){
$redirect = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : home_url( '/' );
$user = wp_get_current_user();
if ( !defined('DOING_AJAX') && in_array( 'subscriber', (array) $user->roles ) ) {
wp_redirect($redirect);
exit();
}
});