如何定制登录流程

时间:2014-06-08 作者:Falci

我想创建一种新的登录方式。

我现在要做的是:

编辑用户表单,添加保存在user\\u meta中的新字段编辑登录表单,添加新输入我还需要什么:

点击帖子登录,运行我的查询(3),并将其作为有效用户接受wp_signon 功能,但这是不可能的。

还有其他选择吗?

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

您可以在中使用此功能functions.php 在您当前的主题中,它将在登录表单上显示一个额外字段

###################Code starts here ###################
<?php

add_action(\'login_form\', \'add_login_field\');
function add_login_field()
{
?>    
  <p>
      <label for="user_pass">My Input<br>
      <input type="text" name="my_name" value=""/>
  </p>
<?php  
}

function do_anything($user) {
    //do stuff

   $userdata= $user = get_userdatabylogin($user);
   $user_id = $userdata->ID;

   $my_name = $_POST[\'my_name\'];



   add_user_meta( $user_id, \'my_name\', $my_name);

}

add_action(\'wp_login\', \'do_anything\');
?>
############## CODE ENDS HERE ###################
上述代码将在登录表单上创建一个额外字段。此值将与可在中接收的其他值一起过帐“do_anything($user)“函数。最后,此值可以另存为用户元。

Part 2=======================================================================

add_action(\'login_form\', \'add_login_field\');
function add_login_field()
{

?>    
       <p>
  <label for="user_pass">My Input<br>
  <input type="text" name="my_name" value=""/>
 </p>


 <?     
    }

function do_anything($user) {

    //do stuff

   $userdata= $user = get_userdatabylogin($user);
   $user_id = $userdata->ID;

   $my_name = $_POST[\'my_name\'];


add_user_meta( $user_id, \'my_name\', $my_name);
}
add_action(\'wp_login\', \'do_anything\');


add_filter(\'authenticate\', \'check_login\', 10, 3);

function check_login($user, $username, $password) {
  global $wpdb;  
if(isset($_POST[\'my_name\']) && trim($_POST[\'my_name\'])!="")
{
    $customfield    =   $_POST[\'my_name\'];
$UsermetaData = $wpdb->get_results("SELECT *FROM  wp_usermeta WHERE meta_value=\'$customfield\'");
$user = get_user_by(\'id\', $UsermetaData[0]->user_id );

// Redirect URL //

if ( !is_wp_error( $user ) )
{
    wp_clear_auth_cookie();
    wp_set_current_user ( $user->ID );
    wp_set_auth_cookie  ( $user->ID );

    $redirect_to = user_admin_url();
    wp_safe_redirect( $redirect_to );
    exit();
}
return $user;
}

}

Please check this code snippet. Also you need to modify the code as per requirements. Make sure "my_name" field remain unique and it will not be updated every time on log in.

SO网友:Stephen R

如果您想在登录完成之前捕获输入,我想您可以将wp_authenticate action 然后在那里运行脚本。

此操作位于wp\\U登录内部。与wp\\U登录操作不同,它是在WordPress身份验证过程之前执行的

结束

相关推荐

如何使用过滤器“SIDAAR_LOGIN_WIDGET_FORM_ARGS”

我需要使用Sidebar\\u Login\\u widget\\u form\\u args“过滤器重命名侧栏登录表单上的一些标签;我已经尝试了几天,但没有成功。如果有人能给我指出正确的方向,我将不胜感激。具体来说,我需要将“登录->”按钮重命名为“登录”,将“用户名”重命名为“用户名:”并将“密码”重命名为“密码”:以下是我的代码,但它不起作用:/* Sidebar Login Plugin - Change Form Labels add_filter( \'sidebar_login