По одному из проектов появилась необходимость сделать форму регистрации пользователя прямо в шаблоне с “специфическим” видом, не таким как в стандартной форме в 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



blog comments powered by Disqus
vetklinica.ru centreza.com horton-wow nazvezdu abv-project