マルチサイトでは、このコードはログインの後にユーザー(作者)を/wp-admin/post-new.phpにリダイレクトします....しかしまた私(super admin)にリダイレクトしますこれを防ぐことができますか?
function primary_login_redirect( $redirect_to, $request_redirect_to, $user )
{
if ($user->ID != 0) {
$user_info = get_userdata($user->ID);
if ($user_info->primary_blog) {
$primary_url = get_blogaddress_by_id($user_info->primary_blog) . 'wp-admin/post-new.php';
if ($primary_url) {
wp_redirect($primary_url);
die();
}
}
}
return $redirect_to;
}
add_filter('login_redirect','primary_login_redirect', 100, 3);
is_super_admin()
に対してテストすることができます。私のテストでは次のように動作します。
function primary_login_redirect( $redirect_to, $request_redirect_to, $user ) {
if ( is_a( $user, 'WP_User' ) && ! is_super_admin( $user->ID ) ) {
if ( $user_info->primary_blog ) {
$user_info = get_userdata( $user->ID );
$primary_url = get_blogaddress_by_id( $user_info->primary_blog ) . 'wp-admin/post-new.php';
if ( $primary_url ) {
wp_redirect( $primary_url );
die();
}
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'primary_login_redirect', 100, 3 );
is_a()
チェックはログアウト時に私が得たいくつかの通知をクリアします。
編集:あなただけのスーパー管理者のために別のリダイレクトURLをしたい場合は、私はこのようなものに再構築すると思います:
function primary_login_redirect( $redirect_to, $request_redirect_to, $user ) {
if ( is_a( $user, 'WP_User' ) ) {
if ( ! is_super_admin( $user->ID ) ) {
$user_info = get_userdata( $user->ID );
if ( $user_info->primary_blog )
$primary_url = get_blogaddress_by_id( $user_info->primary_blog ) . 'wp-admin/post-new.php';
} else { // super admins
$primary_url = network_admin_url( 'sites.php' );
}
if ( $primary_url ) {
wp_redirect( $primary_url );
die();
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'primary_login_redirect', 100, 3 );