我使用子主題概念自定義了新用戶注冊表。為此,我覆寫了 form-login.php 檔案。
wp-content/plugings/woocommerce/templates/myaccount/form-login.php
我的新注冊看起來像這樣

現在我正在驗證這樣的欄位 -
function wooc_validate_extra_register_fields( $username, $email, $validation_errors ) {
if ( isset( $_POST['billing_first_name'] ) && empty( $_POST['billing_first_name'] ) ) {
$validation_errors->add( 'billing_first_name_error', __( 'First name cannot be left blank.', 'woocommerce' ) );
}
if ( isset( $_POST['billing_last_name'] ) && empty( $_POST['billing_last_name'] ) ) {
$validation_errors->add( 'billing_last_name_error', __( 'Last name cannot be left blank.', 'woocommerce' ) );
}
if ( isset( $_POST['reg_customer_dob'] ) && empty( $_POST['reg_customer_dob'] ) ) {
$validation_errors->add( 'reg_customer_dob_error', __( 'Date of birth cannot be left blank.', 'woocommerce' ) );
}
if ( isset( $_POST['billing_email_cnfrm'] ) && empty( $_POST['billing_email_cnfrm'] ) ) {
$validation_errors->add( 'confirm_email_error', __( 'Confirm email address cannot be left blank.', 'woocommerce' ) );
}
/** Below Code added becouse code conflict in my account/Registration & chekout page/regsitration */
if(isset($_POST['billing_email']))
{
if($_POST['billing_email_cnfrm'] != $_POST['billing_email'])
{//$_POST['billing_email'] email filed in checkout page
error_log("Confirm Email checkout page - " . $_POST['billing_email_cnfrm'] ."And User Email - " . $_POST['billing_email']);
$validation_errors->add( 'email_not_match_error', __( 'Check Out Error Confirm Email address does not match.', 'woocommerce' ) );
}
}
if( isset($_POST['email']))
{
if ( $_POST['billing_email_cnfrm'] != $_POST['email'] ) {
//$_POST['eamil'] email filed in Myaccount regisration page
error_log("Confirm Email registration page - " . $_POST['billing_email_cnfrm'] ."And User Email - " . $_POST['email']);
$validation_errors->add( 'email_not_match_error', __( 'Registration Error Confirm Email address does not match.', 'woocommerce' ) );
}
}
/** End of above Code -- added becouse code conflict in my account/Registration & chekout page/regsitration */
if ( isset( $_POST['user_password_again'] ) && empty( $_POST['user_password_again'] ) ) {
$validation_errors->add( 'confirm_password_error', __( 'Confirm password cannot be left blank.', 'woocommerce' ) );
}
/** Below Code added becouse code conflict in my account/Registration & chekout page/regsitration */
if(isset($_POST['account_password'] ))
{
if ( $_POST['user_password_again'] != $_POST['account_password'] ) {
//$_POST['account_password'] Default password filed in Checkout page
$validation_errors->add( 'password_not_match_error', __( 'Checkout Error Passwords do not match.', 'woocommerce' ) );
}
}
if(isset($_POST['password'] ))
{
if ( $_POST['user_password_again'] != $_POST['password'] ) {
//$_POST['account_password'] Default password filed in Myaccount regstration page
$validation_errors->add( 'password_not_match_error', __( 'Registration Error Passwords do not match.', 'woocommerce' ) );
}
}
/** End of above Code -- added becouse code conflict in my account/Registration & chekout page/regsitration */
if ( isset( $_POST['billing_phone'] ) && empty( $_POST['billing_phone'] ) ) {
$validation_errors->add( 'billing_mobile_number_error', __( 'Mobile number cannot be left blank.', 'woocommerce' ) );
}
if(!validate_mobile($_POST['billing_phone']))
{
$validation_errors->add( 'billing_mobile_number_error', __( 'Mobile number entry is numerical only and cannot contain any spaces.', 'woocommerce' ) );
}
/*
if (isset($_POST['billing_phone']) && strlen($_POST['billing_phone']) < 5 ) {
$validation_errors->add('billing_mobile_number_error', __('<strong>Phone number length should not be less than 5 digit</strong>', 'woocommerce'));
}
*/
return $validation_errors;
}
add_action( 'woocommerce_register_post', 'wooc_validate_extra_register_fields', 10, 3 );
它作業正常。但它會一一顯示驗證錯誤(附上圖片以供參考)。

我想一次顯示所有驗證錯誤。任何建議
更新
我也嘗試過鉤子woocommerce_process_registration_errors而不是woocommerce_register_post。如果我使用鉤子woocommerce_process_registration_errors 所以串列顯示但功能 wc_create_new_customer() (位于 wc-user-functions.php 檔案)的默認驗證沒有顯示。
uj5u.com熱心網友回復:
使用woocommerce_process_registration_errors過濾鉤。試試下面的代碼。
function custom_woocommerce_process_registration_errors( $validation_errors, $username, $password, $email ){
if ( !isset( $_POST['email'] ) || $_POST['email'] == '' ) {
$validation_errors->add( 'email', __( 'Please enter email address.', 'woocommerce' ) );
}
if ( !isset( $_POST['password'] ) || $_POST['password'] == '' ) {
$validation_errors->add( 'password', __( 'Please enter passwors.', 'woocommerce' ) );
}
return $validation_errors;
}
add_filter( 'woocommerce_process_registration_errors', 'custom_woocommerce_process_registration_errors', 10, 4 );
測驗和作業。

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/371488.html
標籤:php WordPress的 求购 钩子商务
上一篇:對分組資料使用isin()函式
