Сохранение и показ согласий клиента на ПДн в заказе WooCommerce

Законодательство становится все строже и теперь для интернет-магазинов нужно записывать все согласия клиента на обработку персональных данных при оформления заказа.

Как я понимаю, на странице оформления заказа можно создать пользовательское поле с чекбоксом, сохранять его и результат показывать в заказах.

Как пример, можно реализовать такое пользовательское поле с согласием:

//Дополнительный чекбокс согласия на обработку персональных данных
add_action('woocommerce_review_order_before_submit', 'add_custom_privacy_checkbox', 20);

function add_custom_privacy_checkbox() {
    ?>
    <p class="form-row privacy-accept validate-required">
        <label class="woocommerce-form__label woocommerce-form__label-for-checkbox checkbox">
            <input type="checkbox" class="woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" name="custom_privacy" id="custom_privacy">
            <span class="woocommerce-terms-and-conditions-checkbox-text">
                Даю согласие на&nbsp;обработку моих персональных данных *
            </span>
        </label>
        <input type="hidden" name="custom_privacy_field" value="1">
    </p>
    <?php
}

add_action('woocommerce_checkout_process', 'validate_custom_privacy_checkbox');

function validate_custom_privacy_checkbox() {
    if (!isset($_POST['custom_privacy'])) {
        wc_add_notice('Вы должны дать согласие на&nbsp;обработку персональных данных. Без этого РКН может мне сделать «а-та-та» :(', 'error');
    }
}
//Сохраняем полученное согласие в мета-данные заказа
add_action('woocommerce_checkout_update_order_meta', 'save_custom_privacy_consent');

function save_custom_privacy_consent($order_id) {
    if (isset($_POST['custom_privacy'])) {
        update_post_meta($order_id, '_custom_privacy_consent', 'yes');
    } else {
        update_post_meta($order_id, '_custom_privacy_consent', 'no');
    }
}
//Выводим в карточке заказа, что согласие получено
add_action('woocommerce_admin_order_data_after_billing_address', 'display_custom_privacy_consent_in_admin', 10, 1);

function display_custom_privacy_consent_in_admin($order) {
    $consent = get_post_meta($order->get_id(), '_custom_privacy_consent', true);
    $status = ($consent === 'yes') ? 'Получено' : 'Не получено';
    
    echo '<p><strong>Согласие на обработку персональных данных:</strong> ' . $status . '</p>';
}

Но у меня возник вопрос, можно ли по такому же принципу сохранять и показывать стандартное согласие, которое есть в WooCommerce? Я имею в виду блок "Я согласен с политикой конфиденциальности и правилами сайта" перед кнопкой "Подтвердить заказ".

Просто я не могу найти примеры и код для этого функционала. Буду рад вашей помощи. Тем более, такой код скоро понадобится многим сайтам.


Ответы (0 шт):