Создание формы регистрации пользователя WordPress

У меня есть страница формы с названием Test Form с этой формой:

<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> 

И в backend я имею php-файл с именем TestForm.php

 <?php function create_account(){ $user = 'AccountID'; $pass = 'AccountPassword'; $email = 'email@domain.com'; 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'); ?> 

Теперь, если эта функция определена в function.php, тогда она отлично работает и создает пользователя, но такая же функция в TestForm.php не работает. Пожалуйста помоги

Также я буду получать данные из формы следующим образом:

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

Если вы отправляете данные формы непосредственно в файл TestForm.php , не ожидайте загрузки 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 :

 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 } } } add_action('init','create_account'); 

PD: Я предлагаю вам использовать современные разметки форм HTML5 и типы ввода