ページにアクセスするためにログインするようにユーザーに要求するカスタムページがあります。ログインしたら、同じページにリダイレクトしたいのですが、リダイレクトの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"を返します)が、どうすればよいか私は考えられません。
このフィルタを使用して、ユーザー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);
ログインページをコンテンツのあるページから分離することでこれを解決できました。そのため、私はログインフォームを持つページを1つ持っていて、一番上にユーザーがログインしているかどうかをチェックします。