Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Wordpress » Tùy biến registration form, Thêm trường mới ở trang đăng ký woocommerce

Tùy biến registration form, Thêm trường mới ở trang đăng ký woocommerce

Chủ Nhật, 05/01/2020 by Hoàng Quách

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Trong hướng dẫn này, chúng ta sẽ bổ sung thêm một trường vào form đăng ký và cấu hình thông báo cho một giá trị lỗi của trường đó. Bạn sẽ tự học cách thêm code mà không cần sử dụng plugin hoặc thay đổi giao diện WooCommerce

Mặc định form đăng ký của WooCommerce chỉ có 1 trường email:

Bạn có thể tìm Template là templates/form-login.php , nhưng chúng tôi sẽ không sử dụng nó vì woocommerce có 2 action cho phép chúng ta tùy biến thêm các trường khác vào form:

  • woocommerce_register_form_start – bắt đầu form
  • woocommerce_register_form – trước nút “Register”

Bên cạnh đó còn có woocommerce_register_form_end cho phép bạn thêm một cái gì đó sau nút Register nhưng không cần dùng đến nó trong hướng dẫn này.

Sử dụng đoạn mã sau.

add_action( 'woocommerce_register_form', 'hoangweb_add_register_form_field' );
 
function hoangweb_add_register_form_field(){
 
	woocommerce_form_field(
		'country_to_visit',
		array(
			'type'        => 'text',
			'required'    => true, // just adds an "*"
			'label'       => 'Country you want to visit the most'
		),
		( isset($_POST['country_to_visit']) ? $_POST['country_to_visit'] : '' )
	);
 
}

Lưu ý hàm woocommerce_form_field () sẽ cho phép bạn thêm mọi trường form, không chỉ input text. Và chúng ta cũng không cần suy nghĩ về CSS.

Bây giờ chúng ta sẽ yêu cầu người dùng bắt buộc phải nhập trường này, bằng cách thêm xác thực giá trị form trước khi dữ liệu được lưu vào db.

add_action( 'woocommerce_register_post', 'hoangweb_validate_fields', 10, 3 );
 
function hoangweb_validate_fields( $username, $email, $errors ) {
 
	if ( empty( $_POST['country_to_visit'] ) ) {
		$errors->add( 'country_to_visit_error', 'We really want to know!' );
	}
 
}

Với cách này bạn có thể không chỉ kiểm tra xem trường chưa nhập giá trị nào mà còn check nếu như “Field is too short” hoặc “Must contain only numbers” .

Và bước cuối cùng dữ liệu mới cần được lưu vào cơ sở dữ liệu.

add_action( 'woocommerce_created_customer', 'hoangweb_save_register_fields' );
 
function hoangweb_save_register_fields( $customer_id ){
 
	if ( isset( $_POST['country_to_visit'] ) ) {
		update_user_meta( $customer_id, 'country_to_visit', wc_clean( $_POST['country_to_visit'] ) );
	}
 
}

wc_clean() là hàm tiện ích trong WooCommerce phiên bản của sanitize_text_field() , bạn có thể sử dụng 1 trong các hàm trên.

Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè bằng cách nhấn nút chia sẻ ở bên dưới. Theo dõi chúng tôi trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: Wordpress Tìm kiếm: Woocommerce

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.