Мне нужно ввести информацию на странице оформления заказа в woocommerce, чтобы изменить ее имя при каждом обновлении страницы.Это имя меняется на какую-то случайную строку чисел.Это выглядит так:
session_start();
$code = rand(10000,99999);
$_SESSION["field_name"] = $code;
Но когда я вызываю функцию AJAX для обработки этой формы, она не может проверить ввод, он говорит, что он не заполнен.Но это.Это происходит потому, что переменная имени входа изменилась при вызове ajax.
Что я сделал на странице: прямо под входом я печатаю его имя.Он меняется при каждом обновлении страницы.Я поместил ту же переменную в сообщении об ошибке.Так что я могу сказать, если они совпадают.Спойлер: это не так.И когда я нажимаю на кнопку отправки - ошибка показывает ту же переменную (имя входа), но она имеет другие цифры.
Вот страница оформления заказа, над которой я работаю: https://elmersklei.ru/checkout/
Для вашего удобства я по умолчанию кладу один товар в корзину.
Последний ввод - это тот, о котором я говорю.
Вот хук functions.php, который яused:
add_filter( 'woocommerce_checkout_get_value' , 'clear_checkout_fields' );
/**
* Add the field to the checkout
*/
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
session_start();
$code = rand(10000,99999);
$_SESSION["field_name"] = $code;
function my_custom_checkout_field( $checkout ) {
session_start();
echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>';
woocommerce_form_field( $_SESSION["field_name"], array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Fill in this field'),
'placeholder' => __('Enter something'),
), $checkout->get_value( 'my_field_name' ));
echo '</div>';
print $_SESSION["field_name"];
}
/**
* Process the checkout
*/
add_action('woocommerce_checkout_process',
'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
session_start();
// Check if set, if its not set add an error.
if ( ! $_POST[$_SESSION["field_name"]] )
wc_add_notice( __( $_SESSION["field_name"] ), 'error' );
}
Мне нужно это сделать, потому что меня атакует спам-бот.Я слышал, что это помогает предотвратить ложные заказы ботом.Заранее спасибо!