WP_LOGIN_FORM()是否在重定向时将用户ID传递到URL?

时间:2018-02-01 作者:user13286

我有一个自定义页面,要求用户登录以访问该页面。一旦他们登录,我想将他们重定向到同一个页面,但我想将他们的用户ID添加到重定向中的URL字符串中。这只是为了分析,实际内容受到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);

?>
很明显,这是行不通的(返回“0”),因为它试图在用户登录之前获取其ID,但我想不出该怎么做。

2 个回复
最合适的回答,由SO网友:mmm 整理而成

您可以使用此筛选器将用户标识符添加到重定向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);

SO网友:user13286

我可以通过将登录页面与包含内容的页面分离来解决这个问题。因此,我有一个带有登录表单的页面,它在顶部检查用户是否已登录,如果已登录,它会将用户ID重定向到URL中的受保护内容页面,否则会显示登录表单。

结束

相关推荐

为什么wp_users表中的USER_PASS列是varchar(64)

在处理项目时,我发现“wp\\u users”表中的“user\\u pass”列是varchar(64)。WordPress总是将用户密码存储在md5中,md5是一个32字符的ASCII字符串。那么,为什么不将其存储在具有ascii排序规则的char(32)中呢。我这样问是因为我正在处理一个存储用户密码的表。使用varchar(64)还有其他好处吗。