web-dev-qa-db-ja.com

wp_login_form()がリダイレクト時にユーザーIDをURLに渡しますか?

ページにアクセスするためにログインするようにユーザーに要求するカスタムページがあります。ログインしたら、同じページにリダイレクトしたいのですが、リダイレクトのURL文字列にユーザーIDを追加したいのですが。これは分析のためだけのもので、実際のコンテンツはif (current_user_can('')){}によって保護されています

パスワードで保護されたページで試したコードは次のとおりです。

<?php
    $userID = get_current_user_id();

    $args = array(
        'echo'           => true,
        'remember'       => true,
        'redirect'       => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'] . '?uid=' . $userID,
        'form_id'        => 'loginform',
        'id_username'    => 'user_login',
        'id_password'    => 'user_pass',
        'id_remember'    => 'rememberme',
        'id_submit'      => 'wp-submit',
        'label_username' => __( 'Username or Email Address' ),
        'label_password' => __( 'Password' ),
        'label_remember' => __( 'Remember Me' ),
        'label_log_in'   => __( 'Log In' ),
        'value_username' => '',
        'value_remember' => false
    );
    wp_login_form($args);

?>

ログインする前にユーザーのIDを取得しようとしているので、明らかにこれは機能しません( "0"を返します)が、どうすればよいか私は考えられません。

1
user13286

このフィルタを使用して、ユーザーIDまたはリダイレクトURLを追加できます。

add_filter("login_redirect", function ($redirect_to, $requested_redirect_to, $user) {

    $redirect_to = add_query_arg([
        "user_id" => $user->ID,
    ], $redirect_to);


    return $redirect_to;

}, 10, 3);
2
mmm

ログインページをコンテンツのあるページから分離することでこれを解決できました。そのため、私はログインフォームを持つページを1つ持っていて、一番上にユーザーがログインしているかどうかをチェックします。

0
user13286