2014-06-18 96 views
0

我是新来的wordpress,我期待着通过前端注册页面添加用户,我现在真的很困惑,因为我无法获得此代码工作,它只是不会创建用户。无法在wordpress环境中以编程方式创建用户

下面是代码:

<?php 
/* 
Template Name: Register 
*/ 

get_header(); ?> 



<?php 
if(isset($_POST['submit'])){ 

    $email1 = $_POST['email1']; 
    $email2 = $_POST['email2']; 
    $pass1 = $_POST['pass1']; 
    $pass2 = $_POST['pass2']; 

    if($email1 == $email2){ 
     if($pass1 == $pass2) 
     { 
      if(null == username_exists($email_address)) { 
       $user_login = $_POST['uname']; 
       $user_email = $_POST['email1']; 
       $user_pass = $_POST['pass1']; 

       $user_id = wp_create_user($user_login, $user_pass, $user_email); 

       wp_update_user(
       array(
        'ID'   => $user_id, 
        'nickname' => $email_address 
       ) 
      ); 
       $user = new WP_User($user_id); 
       $user->set_role('contributor'); 
      } 


     }else{ 
      echo "Sorry, your passwords do not match <br/>"; 
     } 
    }else{ 
     echo "Sorry your Emails dont match <br/>"; 
     exit(); 
    } 

}else{ 
    $form = <<<EOT 
    <form action="" method="POST"> 
     First Name: <input type="text" name="name"/> <br/> 
     Last Name: <input type="text" name="lname"/> <br/> 
     Username: <input type="text" name="uname"/> <br/> 
     Email: <input type="text" nam="email1"/> <br/> 
     Confim Email: <input type="text" name="email2"/> <br/> 
     Password: <input type="password" name="pass1"/> <br/> 
     Confirm Password: <input type="password" name="pass2"/> <br/> 
     <input type="submit" value="Register" name="submit"/> 
    </form> 
EOT; 

echo $form; 
} 

?> 

<?php get_footer(); ?> 

感谢。

不知道是否重要与否,但我选择wpwpp_为前缀

回答

1

检查功能 如果(空== username_exists($ EMAIL_ADDRESS))// $ email_addrress应该是$ EMAIL1或$ EMAIL2

但我会建议的wp_insert_user而非wp_create_user代替..

<?php 
/* 
Template Name: Register 
*/ 

get_header(); ?> 



<?php 
if(isset($_POST['submit'])){ 

$email1 = $_POST['email1']; 
$email2 = $_POST['email2']; 
$pass1 = $_POST['pass1']; 
$pass2 = $_POST['pass2']; 

if($email1 == $email2){ 
    if($pass1 == $pass2) 
    { 
     if(null == username_exists($email1)) { 
      $user_login = $_POST['uname']; 
      $user_email = $_POST['email1']; 
      $user_pass = $_POST['pass1']; 

$userdata = array(
'user_login' => $user_login , 
'user_pass'=> $user_pass, 
'user_email'=>$user_email 
); 

$user_id = wp_insert_user($userdata) ; 

     wp_update_user(
      array(
       'ID'   => $user_id, 
       'nickname' => $email_address 
      ) 
     ); 
      $user = new WP_User($user_id); 
      $user->set_role('contributor'); 
     } 


    }else{ 
     echo "Sorry, your passwords do not match <br/>"; 
    } 
}else{ 
    echo "Sorry your Emails dont match <br/>"; 
    exit(); 
} 

}else{ 
$form = <<<EOT 
<form action="" method="POST"> 
    First Name: <input type="text" name="name"/> <br/> 
    Last Name: <input type="text" name="lname"/> <br/> 
    Username: <input type="text" name="uname"/> <br/> 
    Email: <input type="text" nam="email1"/> <br/> 
    Confim Email: <input type="text" name="email2"/> <br/> 
    Password: <input type="password" name="pass1"/> <br/> 
    Confirm Password: <input type="password" name="pass2"/> <br/> 
    <input type="submit" value="Register" name="submit"/> 
</form> 
EOT; 

echo $form; 
} 

?> 

<?php get_footer(); ?> 

这可能适合你!祝你好运

+0

它仍然不会工作,它不断发送给我“页面未找到”,只有当我按下提交没有覆盖的领域是什么时候它发送给我的任何行动=“” –

+0

我假设你想要在注册后将用户重定向到您的主页..因此,您可以在关闭 ..... 其他{echo“对不起您的电子邮件不要mathch ...”后使用wp_redirect(); (); wp_redirect('your_site_url'); } ........ – Yamu

1

你从来没有定义$email_address

$email1 = $_POST['email1']; 
$email2 = $_POST['email2']; 

所以,当你这样做:

 if(null == username_exists($email_address)) { 

你”实质上是做username_exists(null),总是回来“是的,该用户不存在”。

相关问题