我成功地向WP数据库插入了一个新用户,我希望该用户在此之后立即登录。我是这样做的
User Login Form
<?php
function dlf_form() {
?>
<form method="post" id="wp_login_form" action="<?php echo $_SERVER[\'REQUEST_URI\']; ?>">
<div class="login-form">
<div class="form-group">
<input name="login_name" type="email" class="form-control login-field" value="" placeholder="Email" id="login-name" required/>
<label class="login-field-icon fui-user" for="login-name"></label>
</div>
<div class="form-group">
<input name="login_password" type="password" class="form-control login-field" value="" placeholder="Password" id="login-pass" required/>
<label class="login-field-icon fui-lock" for="login-pass"></label>
</div>
<input class="btn btn-primary btn-lg btn-block" type="submit" id="dlf_submit" name="dlf_submit" value="Log in" />
</div>
</form>
<p class="login-link">
<a href="<?php echo site_url(\'/register\'); ?>" title="Register">Register</a> |
<a href="<?php echo wp_lostpassword_url(); ?>" title="Lost your password?">Lost your password?</a>
</p>
<?php
}
function dlf_auth( $username, $password ) {
global $user;
get_currentuserinfo();
$creds = array();
$creds[\'user_login\'] = $username;
$creds[\'user_password\'] = $password;
$creds[\'remember\'] = true;
$user = wp_signon( $creds, false );
if ( is_wp_error($user) ) {
//get user email
$email = $_POST[\'login_name\'];
$users= get_user_by( \'email\', $email );//
$key = \'user_login_status\';
//get user login status
$user_status = get_user_meta( $users->ID, $key);
$user_approve = $user_status[0];
$error_msg = \'\';
//echo $user->get_error_message();exit;
//if email does not exist in DB
if(!email_exists( $email ) ){
$error_msg = \'<div style="margin-bottom: 10px" class="btn btn-block btn-md btn-danger"><strong>ERROR: E-mail address does not exist.</strong></div>\';
//if user is not activated
}elseif($user_approve == \'inactive\'){
$error_msg = \'<div style="margin-bottom: 10px" class="btn btn-block btn-md btn-danger"><strong>ERROR: Your account has to be activated before you can login.</strong></div>\';
//if invalid email or password
}else{
//echo $user->get_error_message();exit;
$error_msg = \'<div style="margin-bottom: 10px" class="btn btn-block btn-md btn-danger"><strong>ERROR: Invalid e-mail address or password.</strong></div>\';
}
echo $error_msg;
//echo $user->get_error_message();
}
if ( !is_wp_error($user)) {
wp_redirect(site_url().\'/overview\');
exit();
}
}
function dlf_process() {
if (isset($_POST[\'dlf_submit\'])) {
dlf_auth($_POST[\'login_name\'], $_POST[\'login_password\']);
}
dlf_form();
}
function dlf_shortcode() {
ob_start();
dlf_process();
return ob_get_clean();
}
add_shortcode(\'dm_login_form\', \'dlf_shortcode\');
?>
echo \'<pre>\';print_r($user);exit; this gives all the user details but user can not login it shows blank Login page. The same code works on `localhost` but not on my staging server.
在检查页面源代码时,它会从我的主题的div下面暂停
page.php
<div class="entry-content">
<?php the_content( __( \'Continue reading <span class="meta-nav">...</span>\', \'flat\' ) ); ?>
<?php wp_link_pages( array( \'before\' => \'<div class="page-links"><span class="page-links-title">\' . __( \'Pages:\', \'flat\' ) . \'</span>\', \'after\' => \'</div>\', \'link_before\' => \'<span>\', \'link_after\' => \'</span>\' ) ); ?>
</div>
在我的
header.php
我已经使用了下面的代码,打印它会给我空值
<?php $current_user = wp_get_current_user();
print_R($current_user);exit;
?>
WP_User Object ( [data] => [ID] => 0 [caps] => Array ( ) [cap_key] => [roles] => Array ( ) [allcaps] => Array ( ) [filter] => )