В поле Woocommerce добавьте поле с обязательной датой рождения для взрослых.

Мне нужно было бы добавить обязательное поле для даты рождения в платежных реквизитах Woocommerce и проверить, не исполнилось ли им 18 лет.

Как я мог сделать?

Любая помощь приветствуется.

1

Решение

Следующий код добавляет поле даты рождения для выставления счета и проверяет возраст покупателя, избегая проверки, если клиенту не менее 18 лет:

// Adding a custom checkout date field
add_filter( 'woocommerce_billing_fields', 'add_birth_date_billing_field', 20, 1 );
function add_birth_date_billing_field($billing_fields) {

$billing_fields['billing_birth_date'] = array(
'type'        => 'date',
'label'       => __('Birth date'),
'class'       => array('form-row-wide'),
'priority'    => 25,
'required'    => true,
'clear'       => true,
);
return $billing_fields;
}


// Check customer age
add_action('woocommerce_checkout_process', 'check_birth_date');
function check_birth_date() {
// Check billing city 2 field
if( isset($_POST['billing_birth_date']) && ! empty($_POST['billing_birth_date']) ){
// Get customer age from birthdate
$age = date_diff(date_create($_POST['billing_birth_date']), date_create('now'))->y;

// Checking age and display an error notice avoiding checkout (and emptying cart)
if( $age < 18 ){
wc_add_notice( __( "You need at least to be 18 years old, to be able to checkout." ), "error" );

WC()->cart->empty_cart(); // <== Empty cart (optional)
}
}
}

Код помещается в файл function.php вашей активной дочерней темы (active theme). Проверено и работает.

введите описание изображения здесь

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]