Доступ и проверка is_page () внутри woocommerce_register_post для условного запуска проверки - PullRequest
0 голосов
/ 06 марта 2020

Хорошо, я схожу с ума. Почему я не могу использовать is_page () внутри функции, указанной в действии woocommerce_register_post , но я могу сделать is_page () внутри функции, указанной в woocommerce_register_form ?

У меня есть условное поле, которое я добавляю в стандартную форму регистрации Woocommerce на пользовательской странице, предназначенной для пользовательского типа пользователя (которая будет установлена ​​после того, как они подтвердят, что приобрели продукт). Поэтому на пользовательской странице я добавляю поле с серийным номером, но только если is_page ('custom-registration'). Это работает отлично.

Но тогда, когда я хочу запустить проверку перед созданием пользователя только для тех регистраций на пользовательской странице с настраиваемым полем, is_page ('custom-registration') никогда не возвращает результат, поэтому пользовательская проверка не выполняется. и пользователь может зарегистрироваться без проверки серийного номера. Что мне не хватает? Спасибо !!

add_action( 'woocommerce_register_form', 'add_register_form_field_serialnumber' );

function add_register_form_field_serialnumber(){

  if (!is_page( 'custom-registration' ) ) {
    woocommerce_form_field(
        'serial_number',
        array(
            'type'        => 'text',
            'required'    => true, // just adds an "*"
            'label'       => 'Serial Number'
        ),
        ( isset($_POST['serial_number']) ? $_POST['serial_number'] : '' )
    );
   }
}

add_action( 'woocommerce_register_post', 'validate_serial_number', 10, 3 );

function validate_serial_number( $username, $email, $errors ) {
   if(is_page( 'custom-registration' )) {
      $errors->add( 'serial_number', 'Just returning an error message to show this is_page() is working' );
 }
}
...