По одному из проектов появилась необходимость сделать форму регистрации пользователя прямо в шаблоне с “специфическим” видом, не таким как в стандартной форме в wp-login.php?action=registration
Как это делал я под катом…
Цель: Сделать код выводящий форму регистрации в требуемом месте шаблона с возможностью задания оформления.
Необходимо: тема ( в неё будем вставлять) плагин Simplr User Registration Form
План работы:
- создаем страницу регистрации в админке
- выделяем место в теме
- редактируем плагин
Нулевой шаг.
Создаем страницу для формы регистрации и запоминаем её ID.
Первый шаг. Подготовка темы
в выбранном месте создаем loop цикл. и с помощью query_post задаем вывод нужной страницы
<?php
wp_reset_query();
query_posts($query_string . '&post_type=page&page=ID' );
if (have_posts()) :
while (have_posts()) : the_post(); ?>
<?php the_content(' ');?>
<?php endwhile; endif; wp_reset_query(); ?>
</div>
<?php
endif;
?>
не забываем использовать wp_reset_query дабы не нарушался вывод остального контента.
Второй шаг. Создание записи
В админке мы уже создали страницу под форму, теперь вставим в неё “тег” плагина для отображения формы
[Register role="editor"]
в описании к плагину сказано, что можно задавать роль для нового пользователя в параметре “role”
Шаг третий редактирование плагина.
Этот шаг необходим тем, кому мало стандартной формы регистрации из плагина
Я настроил её под себя следующим образом
- добавил при реге и в профиль пользователя поля Компания,FaceBook и …
- добавил описание о себе
- добавил ввод пароля пользователя
- + убрал форму для ввода стандартных полей (AIM и т.д.)
пройдемся по интересующим нас функциям
- simplr_reg_set – интерфейс для работы из админки
- sreg_process_form – “ввод” данных в БД
- simplr_build_form – вывод формы
моя функция вывода
function simplr_build_form($data) {
$label_first = apply_filters('simplr_label_fname', 'First Name:' );
$label_last = apply_filters('simplr_label_lname', 'Last Name:' );
$label_email = apply_filters('simplr_label_email', 'Email Address:' );
$label_username = apply_filters('simplr_label_username', 'Your Username:' );
$form = '';
$form .= '<form method="post" action="" id="simplr-reg">';
$form .= '<input class="defaultInputValue" type="text" name="fname" title="Имя" />';
$form .= '<input type="text" class="defaultInputValue" name="lname" title="Фамилия"/>';
$form .= '<input type="text" name="comp" title="Компания" class="defaultInputValue" />';
$form .= '<input type="text" name="username" class="defaultInputValue check" title="Username" />';
$form .= '<img class="valide" src="'.get_bloginfo('template_directory').'/img/reg_wrong.png"/>';
$form .= '<input type="text" name="email" class="defaultInputValue" title="E-mail" /><br/>';
// Пароль
$form .= '<input type="password" class="defaultInputValue" name="password" title="Password" />';
$form .= '<input type="password" class="defaultInputValue check center-input" name="repassword" title="RePassword" />';
$form .= '<img class="valide" src="'.get_bloginfo('template_directory').'/img/reg_ok.png"/>';
//hook for adding profile fields
$form = apply_filters('simplr_add_form_fields', $form);
$form .= '<textarea name="description" title="Расскажите коротко о себе" class="defaultInputValue"></textarea>';
//submission field
$form .= '<input type="submit" name="submit-reg" value="Зарегистрироваться">';
//wordress nonce for security
$nonce = wp_create_nonce('simplr_nonce');
$form .= '<input type="hidden" name="simplr_nonce" value="' .$nonce .'" />';
$form .= '</form>';
return $form;
}
тут должно быть все понятно просто указываем поля и прописываем им name (те же что и у полей в админке)
важное замечание плагин у меня отказался работать пока я не поменял в функции добавления данных add_user_meta на update_user_meta
т.к. поля AIM и им подобные мне не интересны то я просто убрал их из админки соответственно делается это удалением кусков кода из simplr_reg_set
