Хорошо, я схожу с ума. Почему я не могу использовать 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' );
}
}