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

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài Tùy biến registration form, Thêm trường mới ở trang đăng ký woocommerce

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à chẳng cần dùng plugin hoặc thay đổi giao diện WooCommerce

Mặc định form đăng ký của WooCommerce chỉ có một 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 cấp 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 cấp phép bạn thêm 1 cái gì đó sau nút Register nhưng chẳ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, chẳng những input text. Và chúng ta cũng chẳng cần suy nghĩ về CSS.

Bây giờ chúng ta sẽ đòi hỏi người sử dụng sẽ phải nhập trường này, bằng cách thêm xác thực giá trị form trước lúc 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ể chẳng những 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 luôn phải đượ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ũng đều có thể sử dụng 1 trong số hàm trên.

Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dấu kênh chia sẻ kiến thức WordPress của TopVn trên Twitter và Facebook

Bài viết Tùy biến registration form, Thêm trường mới ở trang đăng ký woocommerce được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang