2014-06-16 71 views
1

我在我的woocommerce註冊表單中添加了一些新字段,但是我無法驗證這些新字段。Woocommerce註冊表單驗證不起作用

有我的新領域

add_action('register_form','myplugin_register_form'); 
function myplugin_register_form(){ 
    $first_name = (isset($_POST['first_name'])) ? $_POST['first_name']: ''; 
    $last_name = (isset($_POST['last_name'])) ? $_POST['last_name']: ''; 
    ?> 
    <div class="row"> 
     <div class="col-md-4"> 
      <label for="first_name">Prénom <span class="required">*</span></label> 
      <input type="text" class="input-text" name="first_name" id="first_name" value="<?php if (! empty($_POST['first_name'])) echo esc_attr($_POST['first_name']); ?>" /> 
     </div> 
     <div class="col-md-4"> 
      <label for="last_name">Nom <span class="required">*</span></label> 
      <input type="text" class="input-text" name="last_name" id="last_name" value="<?php if (! empty($_POST['last_name'])) echo esc_attr($_POST['last_name']); ?>" /> 
     </div> 
    </div> 
    <?php 
} 

這是根據WordPress的我的驗證過濾器CODEX https://codex.wordpress.org/Customizing_the_Registration_Form

function myplugin_registration_errors ($errors, $sanitized_user_login, $user_email) { 

    if (empty($_POST['first_name'])) 
     $errors->add('first_name_error', __('<strong>ERROR</strong>: You must include a first name.','mydomain')); 

    return $errors; 
} 

當我提交我的形式,沒有現場$ _ POST ['FIRST_NAME ']它傳遞沒有錯誤。

這樣做的最佳方法是什麼?

謝謝您的幫助

回答

1

如果您在woocommerce-fundtions.php看它檢查$woocommerce->error -count() == 0,然後繼續。所以,不是將錯誤使用WordPress $errors我想補充錯誤Woocommerce像$woocommerce->add_error($reg_errors->get_error_message())

因此,代碼將

add_filter('registration_errors', 'myplugin_registration_errors'), 10, 3); 

function myplugin_registration_errors($errors, $sanitized_user_login, $user_email) { 
    global $woocommerce; 

    if (empty($_POST['first_name'])) 
     $woocommerce->add_error('first_name_error', __('<strong>ERROR</strong>: You must include a first name.','mydomain')); 

    return $errors; 
} 
3

請寫代碼主題的/子主題的functions.php的

/** 
* Validate the extra register fields. 
* 
* @param string $username   Current username. 
* @param string $email    Current email. 
* @param object $validation_errors WP_Error object. 
* 
* @return void 
*/ 
function wooc_validate_extra_register_fields($username, $email, $validation_errors) { 

    if (isset($_POST['first_name']) && empty($_POST['first_name'])) { 
     $validation_errors->add('first_name_error', __('<strong>Error</strong>: First Name is required!.', 'woocommerce')); 
    } 

    if (isset($_POST['last_name']) && empty($_POST['last_name']) ) { 
     $validation_errors->add('last_name_error', __('<strong>Error</strong>: Last Name is required!.', 'woocommerce')); 
    } 
} 

add_action('woocommerce_register_post', 'wooc_validate_extra_register_fields', 10, 3); 
+0

嗨,歡迎來到SO。將來,如果您可以添加有關如何實施解決方案的進一步說明,那麼它們通常對OP更有幫助,因爲他們可能是初學者程序員。它也有助於這個職位的未來讀者 – Deepend