を使用して、自分の役割に基づいてログイン時に特定のページにユーザーを強制したいです。
if ( current_user_can('contributor') )
そして主なログイン機能
function wp_loginout($redirect = '', $echo = true) {
if ( ! is_user_logged_in() )
$link = '<a href="' . esc_url( wp_login_url(get_permalink()) ) . '">' . __('Log in') . '</a>';
else
$link = '<a href="' . esc_url( wp_logout_url(get_permalink()) ) . '">' . __('Log out of account') . '</a>';
if ( $echo )
echo apply_filters('loginout', $link);
else
return apply_filters('loginout', $link);
}
私はいくつかの組み合わせを試しましたが失敗しているようです。任意の助けがいただければ幸いです。
フィルタlogin_redirect
:
function my_login_redirect_contributors() {
if ( current_user_can('contributor') ){
return 'url-to-redirect-to';
}
}
add_filter('login_redirect', 'my_login_redirect_contributors');
この質問は1年前ですが、うまくいけばこれは何人かの人々を助けることができます。
グローバルな$current_user
はWP_User
オブジェクトであったがnull値を持っていたために、受け入れられた答えが機能しないケースに遭遇しました。次のコードは私がうまくいったことがわかったものです。 3番目のパラメータ$user
の使用に注意してください。
function 22352_login_redirect( $redirect_url, $POST_redirect_url, $user ) {
if ( is_a( $user, 'WP_User' ) && $user->has_cap( 'manage_options' ) ) {
$redirect_url = 'url-to-redirect-to';
}
return $redirect_url;
}
add_filter( 'login_redirect', array( $this, 'wpse22352_login_redirect' ), 10, 3 );