web-dev-qa-db-ja.com

ワードプレスのユーザーをプログラムでログインさせる

そのために次の関数を使用して、ワードプレスユーザーにプログラムでログインしようとしています。

    public function auto_login( $user ) {
        $username = $user;
            if ( !is_user_logged_in() ) {
            $user = get_user_by( 'login', $username );
                wp_set_current_user( $user->ID, $user->user_login );
                wp_set_auth_cookie( $user->ID );
                do_action( 'wp_login', $user->user_login );
            }     
}

残念ながらそれは機能していないようです。その関数はショートコード内から呼び出されます。これは説明でしょうか。何らかのコンテンツが出力される前に、関数を何らかのフィルタにフックするべきですか?また、$ _ GETパラメータに基づいて、新しくログインしたユーザーを特定の投稿にリダイレクトしたいのですが、関数の最後にヘッダーリダイレクトを追加するだけでいいのですか。

ご協力ありがとうございます。

2
user54952

これをtemplate_redirectフックで行います。ブログ内の別のページにリダイレクトするには、wp_safe_redirectを使用できます。私はあなたにコードを与えることができません。

1
sabarnix

それは私のために働いているので、あなたはこの機能を試すことができます

function custom_login() {
    $creds = array();
    $creds['user_login'] = 'example';
    $creds['user_password'] = 'plaintextpw';
    $creds['remember'] = true;
    $user = wp_signon( $creds, false );
    if ( is_wp_error($user) )
        echo $user->get_error_message();
}
// run it before the headers and cookies are sent
add_action( 'after_setup_theme', 'custom_login' );

詳しくは 公式サイト hereをご覧ください。

4
TBI Infotech