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
- 3 con giáp tránh dữ, đón lành, may mắn hết phần thiên hạ tháng mới
- Nàng công chúa 50 tuổi vẫn rơi vào lưới tình của cậu thiếu niên 13
- Lấy Source Code của một trang web trong PHP | Hơn 100 bài tập PHP có giải hay nhất tại TopVn
- Tìm kiếm Google: 17 Mẹo tìm kiếm nâng cao trên Google Search
- Mã hóa ASCII trong HTML | 190 thẻ HTML hay nhất