创建WordPress用户注册表单

时间:2014-07-16 作者:Gaurav

我有一个名为测试表单的表单页面,该表单:

<div id="container">
<form action="wp-content/themes/max-magazine/TestForm.php" method="post" name="myForm">
User <input type="text"  name="uname" />
Email  <input id="email" type="text" name="uemail" />
Password  <input type="password"  name="upass" />
<input type="submit" value="Submit" /></form>
</div>
在后端,我有一个名为TestForm的php文件。php

<?php 
function create_account(){
$user = \'AccountID\';
$pass = \'AccountPassword\';
$email = \'[email protected]\';
if ( !username_exists( $user )  && !email_exists( $email ) ) {
    $user_id = wp_create_user( $user, $pass, $email );
    $user = new WP_User( $user_id );
    $user->set_role( \'contributor\' );
} 
}
add_action(\'init\',\'create_account\');
?>
现在,如果此函数是在函数中定义的。php然后可以正常工作,并在TestForm中创建用户但相同的函数。php不工作。请帮忙

此外,我将从表单中提取数据,如下所示:

<?php
$user = $_POST[\'uname\'];
$pass = $_POST[\'upass\'];
$email = $_POST[\'uemail\'];
?>

1 个回复
SO网友:cybmeta

您正在将表单中的数据直接发送到TestForm.php 文件,它是WordPress逻辑之外的PHP脚本。它是独立的脚本。您可以设置表单的action 属性设置为空字符串,这样表单数据将发送到包含表单的同一页面,该页面是WordPress的一部分:

<div id="container">
    <form method="post" name="myForm">
        User <input type="text"  name="uname" />
        Email  <input id="email" type="text" name="uemail" />
        Password  <input type="password"  name="upass" />
        <input type="submit" value="Submit" />
    </form>
</div>
在这种情况下,表单数据被发送到Wordpress页面add_action(\'init\',\'create_account\'); 如果将其添加到functions.php 文件,例如:

add_action(\'init\',\'create_account\');
function create_account(){
    //You may need some data validation here
    $user = ( isset($_POST[\'uname\']) ? $_POST[\'uname\'] : \'\' );
    $pass = ( isset($_POST[\'upass\']) ? $_POST[\'upass\'] : \'\' );
    $email = ( isset($_POST[\'uemail\']) ? $_POST[\'uemail\'] : \'\' );

    if ( !username_exists( $user )  && !email_exists( $email ) ) {
       $user_id = wp_create_user( $user, $pass, $email );
       if( !is_wp_error($user_id) ) {
           //user has been created
           $user = new WP_User( $user_id );
           $user->set_role( \'contributor\' );
           //Redirect
           wp_redirect( \'URL_where_you_want_redirect\' );
           exit;
       } else {
           //$user_id is a WP_Error object. Manage the error
       }
    }

}
我建议您使用现代HTML5表单标记和输入类型

结束