vnfaster@gmail.com

Tạo trang Đăng ký cho WordPress không cần Plugin

Tạo trang đăng ký cho WordPress theo phong cách riêng của bạn, không sử dụng plugin tối ưu code cho Webmaster

Khi bạn dùng WordPress, phần đăng ký thành viên hơi rắc rối, tại sao chúng ta lại không làm nó đơn giản hơn bằng cách tự tạo 1 trang dăng ký theo ý mình.

Demo :

Tạo trang Đăng ký cho WordPress không cần Plugin

  • Bước 1 : Bạn tạo 1 file template dang-ky.php vào thư mục Themes WordPress của bạn đang dùng
<?php /* Template Name: Đăng Ký */ ?>
  • Nội dung của file này bạn có thể lấy ở trang Page.php bạn đang dùng. chỉ khác là bạn sẽ thay đoạn vòng lặp thành đoạn dưới đây :
<?php if(is_user_logged_in()) { $user_id = get_current_user_id();$current_user = wp_get_current_user();$profile_url = get_author_posts_url($user_id);$edit_profile_url = get_edit_profile_url($user_id); ?>
<div class="regted">
	Bạn đã đăng nhập với tên nick <a href="<?php echo $profile_url ?>"><?php echo $current_user->display_name; ?></a> Bạn có muốn <a href="<?php echo esc_url(wp_logout_url($current_url)); ?>">Thoát</a> không ?
</div>
<?php } else { ?>
<div class="dangkytaikhoan">
	<?php $err = ''; $success = ''; global $wpdb, $PasswordHash, $current_user, $user_ID; if(isset($_POST['task']) && $_POST['task'] == 'register' ) { $pwd1 = $wpdb->escape(trim($_POST['pwd1']));
		$pwd2 = $wpdb->escape(trim($_POST['pwd2']));
		$email = $wpdb->escape(trim($_POST['email']));
		$username = $wpdb->escape(trim($_POST['username']));

		if( $email == "" || $pwd1 == "" || $pwd2 == "" || $username == "") {
			$err = 'Vui lòng không bỏ trống những thông tin bắt buộc!';
		} else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
			$err = 'Địa chỉ Email không hợp lệ!.';
		} else if(email_exists($email) ) {
			$err = 'Địa chỉ Email đã tồn tại!.';
		} else if($pwd1 <> $pwd2 ){
			$err = '2 Password không giống nhau!.';
		} else {
			$user_id = wp_insert_user( array ('user_pass' => apply_filters('pre_user_user_pass', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) );
			if( is_wp_error($user_id) ) {
				$err = 'Error on user creation.';
			} else {
				do_action('user_register', $user_id);
				$success = 'Bạn đã đăng ký thành công!';
			}
		}
	}
	?>
<!--display error/success message-->
<div id="message">
		<?php
			if(! empty($err) ) :
				echo ''.$err.'';
			endif;
		?>
		<?php
			if(! empty($success) ) :
				$login_page  = home_url( '/dang-nhap.html' );
				echo ''.$success. '<a href='.$login_page.'> Đăng nhập</a>'.'';
			endif;
		?>
	</div>
	<form class="form-horizontal" method="post" role="form">
<div class="form-group">
	<label class="control-label  col-sm-3" for="username">Tên đăng nhập:</label>
	<div class="col-sm-9">
	<input type="text" class="form-control" name="username" id="username" placeholder="Tên Đăng nhập">
	</div>
</div>
<div class="form-group">
	<label class="control-label col-sm-3" for="email">Email:</label>
	<div class="col-sm-9">
		<input type="email" class="form-control" name="email" id="email" placeholder="Email">
	</div>
</div>
<div class="form-group">
	<label class="control-label col-sm-3" for="pwd1">Password:</label>
	<div class="col-sm-9">
		<input type="password" class="form-control" name="pwd1" id="pwd1" placeholder="Nhập password">
	</div>
</div>
<div class="form-group">
	<label class="control-label col-sm-3" for="pwd2">Nhập lại Pass:</label>
	<div class="col-sm-9">
		<input type="password" class="form-control" name="pwd2" id="pwd2" placeholder="Nhập lại password">
	</div>
</div>
<?php wp_nonce_field( 'post_nonce', 'post_nonce_field' ); ?>
<div class="form-group">
	<div class="col-sm-offset-3 col-sm-9">
	<button type="submit" class="btn btn-primary">Đăng ký</button>
	<input type="hidden" name="task" value="register" />
	</div>
</div>
</form>
</div>
<div class="thongbaologin">
	<?php
		$login  = (isset($_GET['login']) ) ? $_GET['login'] : 0;
		if ( $login === "failed" ) {
				echo '<strong>ERROR:</strong> Sai username hoặc mật khẩu.!';
		} elseif ( $login === "empty" ) {
				echo '<strong>ERROR:</strong> Username và mật khẩu không thể bỏ trống.';
		} elseif ( $login === "false" ) {
				echo '<strong>ERROR:</strong> Bạn đã thoát ra.';
		}
	?>
</div>

<?php } ?>
  • Bước 2 : Bạn vào Trang Quản Trị > Page > Add New Page
  • Phần tên Page bạn đặt là Đăng Ký và chọn Template là Đăng Ký bên trên vừa tạo

Tạo trang Đăng ký cho WordPress không cần Plugin

  • bây giờ bạn có thể xem thành quả của mình bằng đường dẫn : domain/dang-ky

 

Chúc các bạn thành công!

Bài liên quan

    • Khi bạn tạo trang đăng ký như trên (bạn đã có 1 bước nhập password), thì tài khoản mặc định sẽ là thành viên đăng ký (có quyền comment bài viết và không có quyền viết bài), Ở wordpress nếu bạn muốn có chức năng kích hoạt thành viên, bạn cần sử dụng sẵn Form đăng ký mặc định domain/wp-login.php?action=register của nó (bạn sẽ không có bước nhập password và passwordp sẽ được gửi vào mail) bạn nhé

    • Bạn có thể cho mình biết bạn thêm trường upload ảnh để làm gì không,
      Vì đưa trường upload vào thì dễ nhưng còn dùng làm gì để còn xử lý code cho bạn mới là vấn đề

  1. Hi, Mình muốn tích hợp Google Capcha vào để chống spam (không dùng plugin nhé), mong nhận được sự giúp đỡ hướng dẫn từ các bạn. Thân! (chức năng comment có gì đó bất ổn, lúc dc lúc không..híc)

  2. ad cho em hỏi em muốn tạo dạng m.domain.com nhưng lại không biết làm sao để đồng bộ 2 database được,
    không biết ad có bài nào hướng dẫn cái này không ạ

  3. admin có thể chỉ minh lam trang tìm lại mật khẩu. mà khi bấm bào tìm lai mật khẩu nó thong báo len trang người dùng và chuyển thẳng vào email của mình không vậy admin

  4. Cảm ơn bạn đã viết bài này rất chi tiết, bạn cho mình hỏi thêm là làm sao để thêm field đăng ký ko bạn, ví dụ như thêm filed: họ tên, số điện thoại …

    Cảm ơn bạn nhiều

    • Bạn Copy nội dung file Page.php rồi tạo file đăng ký với nội dung đó.
      (Lưu ý copy nội dung Đăng ký bên trên vào phần the_content() của file vừa tạo) như vậy nó tự ăn style của web luôn bạn nhé.

  5. xin chào bạn. bài bạn chỉ rất hay và dễ hiểu.
    mình muốn làm 1 popup trong wordpress để nhận thông tin khách hàng.
    mình ko muốn xài plugin có sẵn.
    + bạn có thể chỉ giúp mình cách hoặc link nào hướng dẫn tạo popup không.
    + và sau khi khách nhập thông tin thì lưu vào cơ sở dữ liệu wordpress để có thể lưu lại sau này.
    xin cảm ơn bạn rất là nhiều

  6. Mình muốn thêm field (Địa chỉ, Điện thoại,..) vào nữa được không bạn? Vấn đề nữa là sau khi tạo các fields đó, đăng ký thì trong User có thấy những thông tin của các fields đã thêm vào không? Làm sao lấy được shortcode ID của từng user ah?
    Thanks bạn nhiều nhiều

    • Bạn có biết sử dụng hàm này không:

      add_user_meta()

      Nếu bạn biết bạn có thể dùng hàm này để insert field của thành viên:
      Bạn hãy để ý đoạn code phía trên:

      $user_id = wp_insert_user(...)

      Sau đoạn trên bạn có add Field và đặt phía dưới như sau:

      add_user_meta( $user_id, 'dia_chi', $value_địa_chỉ_input);
      • Hi add,
        Mình không rõ lắm ah. Ý mình muốn thế này ah:
        1/ Thêm field vào form đăng ký thành viên, Tất nhiên là khi đăng ký vào có field đó thì sẽ được save lại.
        2/ Sau khi thành viên đăng ký xong thì sẽ gửi về cho thành viên thông tin đã điền trên form + Mã số thành viên (mã này là duy nhất)
        Ý mình là vậy á ah.

    • Bạn để ý dòng này có đoạn: ‘role’ => ‘subscriber’

      $user_id = wp_insert_user( array ('user_pass' => apply_filters('pre_user_user_pass', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) );

      Bạn chỉ cần thay subscriber thành author là được.

  7. Cảm ơn bạn Tiến Lực đã chia sẽ cho anh em các bước để tạo riêng from đăng ký thành viên trong WordPress rất chi tiết và đầy đủ, mình thấy có thêm cái này đơn giản hơn rất nhiều so với from có sẵn

    • Chào bạn, đây là phần hướng dẫn nâng cao trong WordPress, bạn có thể tìm hiểu thêm về WordPress để làm nhé, nếu chưa biết gì thì khá khó để làm đó.

    • Chào em, em thêm đoạn này vào file functions.php nhé:

      function add_sdt_user($profile_fields){
      $profile_fields['sodienthoai'] = 'Số điện thoại';
      return $profile_fields;
      }
      add_filter('user_contactmethods', 'add_sdt_user');
      

      Sau khi thêm xong, ở trang thành viên em sẽ thấy có thêm một trường Số điện thoại để cho thành viên điền.

  8. em đã làm theo nhưng khi load trang đăng ký lên thì chỉ lên trang trắng, ah có thể hướng dẫn rõ hơn vị trí lưu file đk ko ạ. em cảm ơn

  9. E tạo ra xong rồi nhưng nó không ăn khớp với theme đang dùng, a bảo tạo 1 file dangky.php với nội dung của page.php thay nội dung bên trên vào the_content(). Nhưng em tìm the_content() trong file page.php không có 🙁

Bình luận bài viết

Bạn có thể dùng các thẻ HTML này:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bình luận của bạn sẽ được hiển thị sau khi kiểm duyệt. Cảm ơn bạn đã để lại bình luận!.

Audio truyện full

phàm nhân tu tiên audio

vũ thần chúa tể audio

thế giới hoàn mỹ audio

vô thượng thần đế audio

vạn cổ thần de audio

tiên nghịch audio

Truyện ebook dịch full

truyện audio

phàm nhân tu tiên audio

tiên nghịch audio

vũ thần chúa tể audio

thế giới hoàn mỹ audio

vô thượng thần đế audio

van co than de

bảo hộ tộc trưởng phe ta audio

sư huynh ta quá ổn trọng audio

quỷ bí chi chủ audio

thiên cơ lâu: bắt đầu chế tạo âm hiểm bảng audio

tối cường trang bức đả kiểm hệ thống audio

tu chân tứ vạn niên audio

thê vi thượng

truyện teen

yêu thần ký

con đường bá chủ

thần mộ

đế bá

tinh thần biến

thần ấn vương tọa

đấu la đại lục 5