Wordpress Пользовательская Форма Регистрации - PullRequest
7 голосов
/ 29 сентября 2011

У меня есть клиент, которому нужна пользовательская форма регистрации.

  • Мне нужно сделать индивидуальный дизайн на этой странице
  • Мне нужно добавить пользовательские поля, такие как Имя, Компания, Телефон и т. Д.

Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

11 голосов
/ 29 сентября 2011

Лучше всего задавать вопросы WordPress, вероятно, на Ответы WordPress .Anyhoo, если вы хотите решить эту проблему без плагинов, вам нужно три вещи:

  1. A пользовательская тема WordPress
  2. A Шаблон страницы
  3. A Страница WordPress , использующая шаблон страницы

Если у вас есть эти три части на месте, вы можете сделать следующее в своем шаблоне страницы:

<?php
/*
Template Name: Registration
*/

global $current_user;
get_currentuserinfo();

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$company = $_POST['company'];

if (($firstname != '') && ($lastname != '') && ($company != '')) {
    // TODO: Do more rigorous validation on the submitted data

    // TODO: Generate a better login (or ask the user for it)
    $login = $firstname . $lastname;

    // TODO: Generate a better password (or ask the user for it)
    $password = '123';

    // TODO: Ask the user for an e-mail address
    $email = 'test@example.com';

    // Create the WordPress User object with the basic required information
    $user_id = wp_create_user($login, $password, $email);

    if (!$user_id || is_wp_error($user_id)) {
       // TODO: Display an error message and don't proceed.
    }

    $userinfo = array(
       'ID' => $user_id,
       'first_name' => $firstname,
       'last_name' => $lastname,
    );

    // Update the WordPress User object with first and last name.
    wp_update_user($userinfo);

    // Add the company as user metadata
    update_usermeta($user_id, 'company', $company);
}

if (is_user_logged_in()) : ?>

  <p>You're already logged in and have no need to create a user profile.</p>

<?php else : while (have_posts()) : the_post(); ?>

<div id="page-<?php the_ID(); ?>">
    <h2><?php the_title(); ?></h2>

    <div class="content">
        <?php the_content() ?>
    </div>

    <form action="<?php echo $_SERVER['REQUEST_URI'] ?>" method="post">
        <div class="firstname">
            <label for="firstname">First name:</label>
            <input name="firstname"
                   id="firstname"
                   value="<?php echo esc_attr($firstname) ?>">
        </div>
        <div class="lastname">
            <label for="lastname">Last name:</label>
            <input name="lastname"
                   id="lastname"
                   value="<?php echo esc_attr($lastname) ?>">
         </div>
         <div class="company">
            <label for="company">Company:</label>
            <input name="company"
                   id="company"
                   value="<?php echo esc_attr($company) ?>">
         </div>
    </form>
</div>

<?php endwhile; endif; ?>

Теперь, когда вы хотите извлечь сохраненный материал, вам нужно знать, находится ли информация внутри самого объекта User или в метаданных.Чтобы получить имя и фамилию (вошедшего в систему пользователя):

global $current_user;
$firstname = $current_user->first_name;
$lastname = $current_user->last_name;

Чтобы получить название компании (вошедшего в систему пользователя):

global $current_user;
$company = get_usermeta($current_user->id, 'company');

ЭтоОсновная суть этого.Здесь все еще не хватает многих вещей, таких как проверка, вывод сообщений об ошибках, обработка ошибок, возникающих в WordPress API, и т. Д. Есть также несколько важных TODO, о которых вам нужно позаботиться, прежде чем код заработает.Код, вероятно, также должен быть разбит на несколько файлов, но я надеюсь, что этого достаточно для начала работы.

0 голосов
/ 24 мая 2019

Пользовательская форма регистрации WordPress имеет два основных преимущества по сравнению со стандартной формой. Первый - это интеграция с общим внешним видом темы веб-сайта. Стандартные формы часто плохо работают с пользовательскими темами, и всегда есть вероятность, что пользовательские файлы CSS не будут хорошо отображаться с формой. С другой стороны, пользовательскую форму можно легко настроить для работы с пользовательским CSS.

Вторая и более популярная причина использования настраиваемой регистрационной формы - выбор настраиваемых полей, которые не включены в стандартную форму. Небольшая настраиваемая форма регистрации ускоряет процесс и собирает все необходимые данные из аккуратного интерфейса.

function wordpress_custom_registration_form( $first_name, $last_name, $username, $password, $email) {
    global $username, $password, $email, $first_name, $last_name;
   echo '
    <form action="' . $_SERVER['REQUEST_URI'] . '" method="post">
   First Name :
    <input type="text" name="fname" value="' . ( isset( $_POST['fname']) ? $first_name : null ) . '">
    Last Name:
    <input type="text" name="lname" value="' . ( isset( $_POST['lname']) ? $last_name : null ) . '">
    Username <strong>*</strong>
    <input type="text" name="username" value="' . ( isset( $_POST['username'] ) ? $username : null ) . '">
    Password <strong>*</strong>
    <input type="password" name="password" value="' . ( isset( $_POST['password'] ) ? $password : null ) . '">
    Email: <strong>*</strong>
    <input type="text" name="email" value="' . ( isset( $_POST['email']) ? $email : null ) . '">
   <input type="submit" name="submit" value="Register"/>
    </form>
    ';
}

Эта форма может быть вставлена ​​в любое место с помощью шорткода [wp_registration_form]. Вот фрагмент кода для установки шорткода:

function wp_custom_shortcode_registration() {
    ob_start();
    wordpress_custom_registration_form_function();
    return ob_get_clean();
}

Я надеюсь, что к настоящему времени у вас есть хорошая идея создать пользовательскую регистрационную форму WordPress. Любая путаница любезно проверьте Создание пользовательских регистрационных форм WordPress

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...