Formularz rejestracji nowych użytkowników bez użycia pluginu dla WordPressa
Istnieje bardzo wiele wtyczek dla WordPress’a umożliwiających dodanie formularza rejestracji nowych użytkowników bezpośrednio do dowolnego szablonu. Pamiętajcie jednak, że odsyłanie internautów do skryptu WP-Admin nie jest zbyt profesjonalnym rozwiązaniem więc na pewno dobrze by było pokusić się o znacznie lepsze wykonanie tego jakże kluczowego elementu portalu internetowego. Poniżej znajduje się kod strony wyświetlającej formularz umożliwiający rejestrację nowych użytkowników, która w naszej witrynie wygląda i działa jak zwykła niczym nie wyróżniająca się podstrona.
Cały skrypt należy zapisać w dowolnym pliku o dowolnej nazwie z rozszerzeniem PHP, a następnie umieścić w katalogu (znajdującym się na serwerze): /wp-content/themes/nazwa_szablonu/page-templates.
Kolejnym krokiem jest dodanie nowej strony w Kokpicie WordPress’a oraz wybranie z menu bocznego szablonu o nazwie: Custom WordPress Signup Page.
Stronie tej możemy również nadać tytuł np. Załóż konto, Zarejestruj… Natomiast tekst, który wpiszecie w edytorze nie zostanie wyświetlony.
<?php /* Template Name: Custom WordPress Signup Page */ require_once(ABSPATH . WPINC . '/registration.php'); global $wpdb, $user_ID; //Check whether the user is already logged in if (!$user_ID) { if($_POST) { //We shall SQL escape all inputs $username = $wpdb->escape($_REQUEST['username']); if(empty($username)) { $error = "Musisz podać swój login."; } else { $email = $wpdb->escape($_REQUEST['email']); if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", $email)) { $error = "Wprowadź poprawny adres e-mail."; } else { $random_password = wp_generate_password( 12, false ); $status = wp_create_user( $username, $random_password, $email ); if ( is_wp_error($status) ) $error = "Podaj inny adres e-mail."; else { $headers = 'From: www.ADRES_TWOJEJ_STRONY.pl\r\n'; $subject = "Rejestracja"; $msg = "Rejestracja przebiegła pomyślnie.\nTwój login:\nLogin: $username\nHasło: $random_password\nAby się zalgować udaj się pod ten adres:\nwww.ADRES_TWOJEJ_STRONY_DO_FORUMULARZA_LOGOWANIA.pl"; wp_mail( $email, $subject, $msg, $headers ); $error = '<span class="success">Prosimy sprawdzić pocztę.</span>'; } } } } get_header(); ?> <div id="primary" class="site-content"> <div id="content" role="main" > <?php if(get_option('users_can_register')) { //Check whether user registration is enabled by the administrator ?> <div class="login"> <h1><?php the_title(); ?></h1> <div class="information">Hasło zostanie wysłane na wskazany adres E-mail. Aby otworzyć formularz logowania kliknij w <a href="ADRES_TWOJEJ_STRONY_DO_FORMULARZA_LOGOWANIA">ten link</a>.</div> <span class="error"><?php echo $error; ?></span> <!-- To hold validation results --> <form id="wp_singup_form" action="" method="post"> <label>Login:</label> <input type="text" name="username" class="text" value="" /> <label>Email:</label> <input type="text" name="email" class="text" value="" /> <input id="submitbtn" name="submit" value="Załóż konto" type="submit" /> </form> </div> <?php } else echo "Możliwość rejestracji nowych użytkowników została zablokowana. Spróbuj ponownie później."; ?> </div> </div> <?php get_sidebar(); get_footer(); } else { wp_redirect( home_url() ); exit; } ?>
Powyższy kod został opracowany na podstawie artykułu: http://www.tutorialstag.com/create-custom-wordpress-registration-page.html.
super, tego szukałem, dzięki :)
Fajnie, że się przydało ;)
Witam
U mnie nie działa. Zrobiłem jak napisałeś. Utworzyłem nawet link w menu do strony. Strona jest pusta. Na liście szablonów się pokazała ale to wszystko . W edytorze tekstowym powinno się coś pokazać? Stronka się nie chce wyświetlić, wyświetla się strona startowa.
Pozdrawiam
Ten kod na pewno działa, musiałbym zobaczyć Twój projekt żeby ocenić co robisz źle.
Super, to muszę udostępnić?
http://znanytrycholog.pl/
pisząć „zobaczyć Twój projekt” miałem na myśli jego kod ;)
Ale kretyn ze mnie , to coś mam wpisać do kodu?
Po pierwsze odblokować w panelu administracyjnym możliwość zakładania kont.
chodzi o :
Każdy może się zarejestrować?
I co dalej?
Jaki teraz błąd rzuca?
Podoba mi się, tego szukałem
ale…
Baaaardzo bym prosił jeszcze, jeżeli to możliwe… nie działa automatyczne generowanie haseł dla uzytkownika, co oznacza, że każdemu nowemu musiałbym ręcznie wysyłać maila z nowym hasłem – a raczej ze zmiana hasła. Da sie to jakoś zmienić? Pozdrawiam!
W kodzie zaimplementowana jest funkcja wysyłania emaili do nowych użytkowników z hasłami, czy na pewno na Twoim serwerze funkcja wp_mail() działa poprawnie?
Wszystko działa sprawnie. : )
Czy da się stworzyć szablon logowania, który nie będzie przenosił użytkownika do panelu logowania administratora. Mam taki skrypt, działa ale niestety przenosi…
Witaj, display_name; ?>.
<a href="”>Wyloguj się
<form method="post" action="”>
W sensie, żeby po zalogowaniu nie przenosiło do panelu administracyjnego?
Witam, artykuł już długo wisi w sieci.
Mam problem, po wklejeniu tego kodu i wybraniu custom theme jak kliknie się w stronę „zarejestruj się” to przerzuca mnie na stronę główną.
Na stronę główną bloga? No a ten link prowadzi do strony z rejestracją?
Tak na stronę główną. Nie, nie mam ustawione żadnego przekierowania
piorempisane.pl – Tutaj moja strona, zrobiłem zgodnie z instrukcją, wkleiłem dokładnie ten sam kod
U mnie działa ok, sprawdź czy jesteś wylogowany jak w to klikasz ;)
Boże.. Tyle się z tym męczyłem :p
Dziękuje bardzo! Jestem w szoku za Waszą reakcje.
Pozdrawiam :)
W dodatku właśnie przed chwilą chciałem sprawdzić jak sprawa ma się z „zaloguj się”
stworzyłem plik PHP przesłałem na serwer do danego themsa, wybrałem przy tworzeniu stony „custom wardpress login” i znowu kieruje po kliknięciu w zakładkę na strone główną :/