This commit is contained in:
2026-07-05 16:32:08 +03:00
parent dc50e5597a
commit 293ae37ea3
11 changed files with 246 additions and 241 deletions

View File

@@ -2,6 +2,81 @@
font-family: "Manrope", sans-serif;
}
.test1-shared-privacy-page .privacy-policy-section {
padding-top: 72px;
}
.test1-shared-privacy-page .privacy-policy-content {
max-width: 980px;
margin: 0 auto;
}
.test1-shared-privacy-page .privacy-policy-content p {
margin: 0 0 18px;
color: #1f2937;
line-height: 1.7;
}
.personal-data-consent {
display: flex;
align-items: flex-start;
gap: 10px;
margin: 2px 0 14px;
color: #374151;
font-size: 13px;
line-height: 1.45;
}
.personal-data-consent input {
flex: 0 0 auto;
width: auto;
margin-top: 3px;
}
.cookie-consent-banner {
position: fixed;
right: 24px;
bottom: 24px;
z-index: 9999;
display: flex;
align-items: center;
gap: 18px;
max-width: 760px;
padding: 18px 20px;
background: #fff;
border: 1px solid rgba(15, 23, 42, 0.14);
box-shadow: 0 18px 50px rgba(15, 23, 42, 0.2);
}
.cookie-consent-banner[hidden] {
display: none;
}
.cookie-consent-banner p {
margin: 0;
color: #1f2937;
line-height: 1.45;
}
.cookie-consent-accept {
flex: 0 0 auto;
padding: 10px 20px;
border: 0;
background: #0f766e;
color: #fff;
font-weight: 700;
}
@media (max-width: 767px) {
.cookie-consent-banner {
right: 12px;
bottom: 12px;
left: 12px;
flex-direction: column;
align-items: stretch;
}
}
.test1-shared-shell .container {
width: min(1180px, calc(100% - 32px));
margin: 0 auto;

View File

@@ -452,7 +452,7 @@ add_filter( 'template_include', 'twentytwentyfour_single_post_template', 25 );
* @return void
*/
function twentytwentyfour_test1_assets() {
$use_test1_assets = is_front_page() || is_home() || is_singular( 'post' ) || is_page( array( 'test1', 'faq', 'contacts', 'delivery', 'service' ) );
$use_test1_assets = is_front_page() || is_home() || is_singular( 'post' ) || is_page( array( 'test1', 'faq', 'contacts', 'delivery', 'service' ) ) || twentytwentyfour_is_privacy_policy_request();
if ( ! $use_test1_assets ) {
return;
@@ -648,6 +648,10 @@ function twentytwentyfour_submit_lead_ajax() {
$form_type = isset( $_POST['form_type'] ) ? sanitize_key( wp_unslash( $_POST['form_type'] ) ) : 'contacts_page';
$page_url = isset( $_POST['page_url'] ) ? esc_url_raw( wp_unslash( $_POST['page_url'] ) ) : '';
if ( empty( $_POST['privacy_consent'] ) ) {
wp_send_json_error( array( 'message' => __( 'Необходимо согласиться на обработку персональных данных.', 'twentytwentyfour' ) ), 422 );
}
if ( 'contacts' === $form_type ) {
$form_type = false !== strpos( $page_url, '/contacts' ) ? 'contacts_page' : 'landing_contacts';
}
@@ -728,6 +732,96 @@ function twentytwentyfour_submit_lead_ajax() {
add_action( 'wp_ajax_twentytwentyfour_submit_lead', 'twentytwentyfour_submit_lead_ajax' );
add_action( 'wp_ajax_nopriv_twentytwentyfour_submit_lead', 'twentytwentyfour_submit_lead_ajax' );
function twentytwentyfour_is_privacy_policy_request() {
if ( is_admin() || empty( $_SERVER['REQUEST_URI'] ) ) {
return false;
}
$request_path = trim( wp_parse_url( wp_unslash( $_SERVER['REQUEST_URI'] ), PHP_URL_PATH ), '/' );
return 'privacy-policy' === $request_path;
}
function twentytwentyfour_privacy_policy_url() {
return home_url( '/privacy-policy/' );
}
function twentytwentyfour_privacy_policy_template() {
if ( twentytwentyfour_is_privacy_policy_request() ) {
status_header( 200 );
include get_theme_file_path( 'page-privacy-policy.php' );
exit;
}
}
add_action( 'template_redirect', 'twentytwentyfour_privacy_policy_template', 0 );
function twentytwentyfour_privacy_consent_checkbox() {
?>
<label class="personal-data-consent">
<input type="checkbox" name="privacy_consent" value="1" required>
<span><?php echo wp_kses_post( sprintf( __( 'Согласен(на) на обработку персональных данных и принимаю <a href="%s">Политику конфиденциальности</a>', 'twentytwentyfour' ), esc_url( twentytwentyfour_privacy_policy_url() ) ) ); ?></span>
</label>
<?php
}
function twentytwentyfour_cookie_consent_banner() {
?>
<div class="cookie-consent-banner" data-cookie-consent-banner hidden>
<p>
<?php esc_html_e( 'Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, Вы соглашаетесь с нашей', 'twentytwentyfour' ); ?>
<a href="<?php echo esc_url( twentytwentyfour_privacy_policy_url() ); ?>"><?php esc_html_e( 'Политикой конфиденциальности', 'twentytwentyfour' ); ?></a>.
</p>
<button type="button" class="cookie-consent-accept" data-cookie-consent-accept><?php esc_html_e( 'Принять', 'twentytwentyfour' ); ?></button>
</div>
<script>
(function () {
var consentName = 'water_delivery_cookie_consent';
var banner = document.querySelector('[data-cookie-consent-banner]');
var acceptButton = document.querySelector('[data-cookie-consent-accept]');
var privacyUrl = <?php echo wp_json_encode( twentytwentyfour_privacy_policy_url() ); ?>;
var consentHtml = 'Согласен(на) на обработку персональных данных и принимаю <a href="' + privacyUrl + '">Политику конфиденциальности</a>';
var hasConsent = document.cookie.split('; ').some(function (cookie) {
return cookie === consentName + '=accepted';
});
if (banner && !hasConsent) {
banner.hidden = false;
}
if (acceptButton) {
acceptButton.addEventListener('click', function () {
document.cookie = consentName + '=accepted; max-age=31536000; path=/; SameSite=Lax';
if (banner) {
banner.hidden = true;
}
});
}
document.querySelectorAll('form').forEach(function (form) {
var ignored = form.matches('.search-form, .woocommerce-cart-form, form[role="search"]');
var hasPersonalFields = form.querySelector('input[type="email"], input[type="tel"], input[name*="phone"], input[name*="email"], textarea, .wpforms-submit, .wpcf7-submit');
if (ignored || !hasPersonalFields || form.querySelector('.personal-data-consent')) {
return;
}
var field = document.createElement('label');
field.className = 'personal-data-consent';
field.innerHTML = '<input type="checkbox" name="privacy_consent" value="1" required> <span>' + consentHtml + '</span>';
var submit = form.querySelector('button[type="submit"], input[type="submit"], .wpforms-submit, .wpcf7-submit');
if (submit && submit.parentNode) {
submit.parentNode.insertBefore(field, submit);
} else {
form.appendChild(field);
}
});
})();
</script>
<?php
}
add_action( 'wp_footer', 'twentytwentyfour_cookie_consent_banner', 20 );
/**
* Send WooCommerce checkout orders to Telegram.
*
@@ -785,7 +879,7 @@ add_action( 'woocommerce_checkout_order_processed', 'twentytwentyfour_send_check
* @return void
*/
function twentytwentyfour_test1_shared_shell_assets() {
if ( ! ( ( function_exists( 'is_checkout' ) && is_checkout() && ! is_order_received_page() ) || ( function_exists( 'is_cart' ) && is_cart() ) || ( function_exists( 'is_shop' ) && is_shop() ) || is_home() || is_singular( 'post' ) || is_page( 'faq' ) || is_page( 'contacts' ) || is_page( 'delivery' ) || is_page( 'service' ) ) ) {
if ( ! ( ( function_exists( 'is_checkout' ) && is_checkout() && ! is_order_received_page() ) || ( function_exists( 'is_cart' ) && is_cart() ) || ( function_exists( 'is_shop' ) && is_shop() ) || is_home() || is_singular( 'post' ) || is_page( 'faq' ) || is_page( 'contacts' ) || is_page( 'delivery' ) || is_page( 'service' ) || twentytwentyfour_is_privacy_policy_request() ) ) {
return;
}

View File

@@ -1,4 +1,4 @@
<?php
<?php
/**
* Contacts template with shared test1 header/footer.
*
@@ -41,6 +41,7 @@ get_header( 'test1', $test1_header_args );
<input class="field" type="tel" name="phone" placeholder="<?php esc_attr_e( 'Телефон', 'twentytwentyfour' ); ?>" aria-label="<?php esc_attr_e( 'Телефон', 'twentytwentyfour' ); ?>" required>
<input class="field" type="text" name="address" placeholder="<?php esc_attr_e( 'Адрес доставки в Севастополе', 'twentytwentyfour' ); ?>" aria-label="<?php esc_attr_e( 'Адрес доставки', 'twentytwentyfour' ); ?>" required>
<textarea class="field" name="comment" placeholder="<?php esc_attr_e( 'Что нужно доставить: например, 2 бутыли 19 л и 1 упаковка 1.5 л', 'twentytwentyfour' ); ?>" aria-label="<?php esc_attr_e( 'Комментарий к заказу', 'twentytwentyfour' ); ?>"></textarea>
<?php twentytwentyfour_privacy_consent_checkbox(); ?>
<button class="button" type="submit"><?php esc_html_e( 'Отправить заявку', 'twentytwentyfour' ); ?></button>
<div class="success-note" id="contactSuccess" role="status" aria-live="polite"><?php esc_html_e( 'Спасибо! Заявка принята. Мы свяжемся с вами для подтверждения заказа.', 'twentytwentyfour' ); ?></div>
</form>
@@ -78,3 +79,4 @@ get_header( 'test1', $test1_header_args );
<?php
get_footer( 'test1' );

View File

@@ -0,0 +1,49 @@
<?php
/**
* Privacy policy page template.
*
* @package Twenty_Twenty_Four
*/
$test1_header_args = array(
'body_class' => 'test1-shared-shell test1-shared-privacy-page',
'header_action_url' => function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' ),
'header_action_label' => __( 'Корзина', 'twentytwentyfour' ),
'header_mode' => 'link',
);
get_header( 'test1', $test1_header_args );
?>
<main class="site-main" role="main">
<section class="section privacy-policy-section">
<div class="container">
<article class="privacy-policy-content">
<h1 class="section-title"><?php esc_html_e( 'Политика конфиденциальности', 'twentytwentyfour' ); ?></h1>
<?php
$policy_file = get_theme_file_path( 'privacy-policy-content.txt' );
$policy_text = file_exists( $policy_file ) ? file_get_contents( $policy_file ) : '';
if ( '' !== trim( $policy_text ) ) {
$policy_text = str_replace( array( "\r\n", "\r" ), "\n", $policy_text );
$paragraphs = preg_split( "/\n{2,}/", trim( $policy_text ) );
foreach ( $paragraphs as $paragraph ) {
$paragraph = trim( $paragraph );
if ( '' === $paragraph ) {
continue;
}
echo '<p>' . nl2br( esc_html( $paragraph ) ) . '</p>';
}
}
?>
</article>
</div>
</section>
</main>
<?php
get_footer( 'test1' );

View File

@@ -1,4 +1,4 @@
<?php
<?php
/**
* Standalone landing template for the page slug "test1".
*
@@ -658,6 +658,7 @@ get_header( 'test1' );
<input class="field" type="tel" name="phone" placeholder="Телефон" aria-label="Телефон" required>
<input class="field" type="text" name="address" placeholder="Адрес доставки в Севастополе" aria-label="Адрес доставки" required>
<textarea class="field" name="comment" placeholder="Что нужно доставить: например, 2 бутыли 19 л и 1 упаковка 1.5 л" aria-label="Комментарий к заказу"></textarea>
<?php twentytwentyfour_privacy_consent_checkbox(); ?>
<button class="button" type="submit">Отправить заявку</button>
<div class="success-note" id="contactSuccess" role="status" aria-live="polite">Спасибо! Заявка принята. Мы свяжемся с вами для подтверждения заказа.</div>
</form>
@@ -744,6 +745,7 @@ get_header( 'test1' );
<option value="Для офиса">Для офиса</option>
</select>
<textarea class="field" name="customerOrder" id="orderItemsField" placeholder="Комментарий к заказу" aria-label="Комментарий к заказу"></textarea>
<?php twentytwentyfour_privacy_consent_checkbox(); ?>
<button class="button" type="submit">Подтвердить заказ</button>
<div class="success-note" id="orderSuccess" role="status" aria-live="polite">Спасибо! Ваш заказ сохранен. Мы свяжемся с вами в ближайшее время.</div>
</form>
@@ -751,3 +753,4 @@ get_header( 'test1' );
</div>
<?php
get_footer( 'test1' );

View File

@@ -0,0 +1,102 @@
Политика в отношении обработки персональных данных
Документ определяет порядок обработки персональных данных посетителей сайта https://dostavka-vodi-krim.ru/.
1. Общие положения
Настоящая политика обработки персональных данных составлена в соответствии с требованиями Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных» (далее — Закон) и определяет порядок обработки персональных данных и меры по обеспечению безопасности персональных данных, предпринимаемые ИП Максимов Антон Сергеевич (далее Оператор).
1.1. Оператор ставит своей важнейшей целью и условием осуществления своей деятельности соблюдение прав и свобод человека и гражданина при обработке его персональных данных, в том числе защиты прав на неприкосновенность частной жизни, личную и семейную тайну.
1.2. Настоящая политика Оператора в отношении обработки персональных данных (далее Политика) применяется ко всей информации, которую Оператор может получить о посетителях веб-сайта https://dostavka-vodi-krim.ru/.
2. Основные понятия, используемые в Политике
2.1. Автоматизированная обработка персональных данных обработка персональных данных с помощью средств вычислительной техники.
2.2. Блокирование персональных данных временное прекращение обработки персональных данных, за исключением случаев, если обработка необходима для уточнения персональных данных.
2.3. Веб-сайт совокупность графических и информационных материалов, а также программ для ЭВМ и баз данных, обеспечивающих их доступность в сети интернет по сетевому адресу https://dostavka-vodi-krim.ru/.
2.4. Информационная система персональных данных — совокупность содержащихся в базах данных персональных данных и обеспечивающих их обработку информационных технологий и технических средств.
2.5. Обезличивание персональных данных — действия, в результате которых невозможно определить без использования дополнительной информации принадлежность персональных данных конкретному Пользователю или иному субъекту персональных данных.
2.6. Обработка персональных данных любое действие или совокупность действий, совершаемых с использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение, уточнение, извлечение, использование, передачу, обезличивание, блокирование, удаление и уничтожение персональных данных.
2.7. Оператор государственный орган, муниципальный орган, юридическое или физическое лицо, самостоятельно или совместно с другими лицами организующие и (или) осуществляющие обработку персональных данных, а также определяющие цели обработки персональных данных, состав персональных данных, подлежащих обработке, и действия, совершаемые с персональными данными.
2.8. Персональные данные любая информация, относящаяся прямо или косвенно к определенному или определяемому Пользователю веб-сайта https://dostavka-vodi-krim.ru/.
2.9. Пользователь любой посетитель веб-сайта https://dostavka-vodi-krim.ru/.
2.10. Предоставление персональных данных действия, направленные на раскрытие персональных данных определенному лицу или определенному кругу лиц.
2.11. Распространение персональных данных любые действия, направленные на раскрытие персональных данных неопределенному кругу лиц или на ознакомление с персональными данными неограниченного круга лиц.
2.12. Трансграничная передача персональных данных передача персональных данных на территорию иностранного государства органу власти иностранного государства, иностранному физическому или иностранному юридическому лицу.
2.13. Уничтожение персональных данных любые действия, в результате которых персональные данные уничтожаются безвозвратно с невозможностью дальнейшего восстановления.
3. Категории субъектов персональных данных
3.1. Оператор обрабатывает персональные данные следующих категорий субъектов:
Пользователи веб-сайта (посетители).
Лица, оставившие заявку через формы обратной связи.
Лица, подписавшиеся на рассылку при наличии такой возможности на сайте.
4. Персональные данные, обрабатываемые Оператором
4.1. Оператор может обрабатывать следующие персональные данные Пользователя:
Фамилия, имя, отчество.
Электронный адрес.
Номера телефонов.
Комментарий к заказу или обращению, который Пользователь самостоятельно указывает в форме.
4.2. Также на сайте происходит сбор и обработка обезличенных данных о посетителях, в том числе файлов cookie, с помощью сервисов интернет-статистики: Яндекс Метрика.
4.3. Вышеперечисленные данные далее по тексту Политики объединены общим понятием «персональные данные».
5. Цели обработки персональных данных
5.1. Цели обработки персональных данных Пользователя:
Информирование Пользователя посредством звонка, отправки электронных сообщений или ответа на заявку.
Связь с Пользователем для расчета стоимости торта, уточнения состава заказа, даты, доставки и других деталей.
Заключение и исполнение договоров с Пользователем.
Улучшение качества сайта, его содержания и удобства использования.
5.2. Оператор имеет право направлять Пользователю уведомления о продуктах, услугах, специальных предложениях и различных событиях. Пользователь может отказаться от получения информационных сообщений, направив Оператору обращение через контактные данные, указанные на сайте.
5.3. Обезличенные данные Пользователей, собираемые с помощью сервисов интернет-статистики, служат для сбора информации о действиях Пользователей на сайте, улучшения качества сайта и его содержания.
6. Правовые основания обработки персональных данных
6.1. Оператор обрабатывает персональные данные Пользователя только при наличии отдельного, явно выраженного согласия, предоставляемого Пользователем при заполнении форм на сайте. Согласие оформляется с помощью активного чекбокса в форме обратной связи.
6.2. Оператор обрабатывает обезличенные данные о Пользователе (cookie) в случае, если это разрешено в настройках браузера Пользователя и если Пользователь дал соответствующее согласие через всплывающее уведомление на сайте.
7. Порядок и условия обработки персональных данных
7.1. Оператор обеспечивает сохранность персональных данных и принимает все возможные меры, исключающие доступ к персональным данным неуполномоченных лиц.
7.2. Персональные данные Пользователя не будут переданы третьим лицам, за исключением случаев, связанных с исполнением действующего законодательства, а также случаев, необходимых для обработки заявки и связи с Пользователем.
7.3. Срок обработки персональных данных — не более 5 лет с момента последнего взаимодействия с Пользователем либо до момента отзыва согласия, если отзыв произошел раньше.
7.4. По истечении срока обработки или при отзыве согласия персональные данные подлежат уничтожению в течение 30 календарных дней, если иное не предусмотрено законом.
8. Права субъекта персональных данных и ответы на запросы
8.1. Пользователь вправе:
Получить доступ к своим персональным данным.
Требовать уточнения, блокирования или уничтожения своих персональных данных.
Отозвать согласие на обработку персональных данных.
Обжаловать действия Оператора.
8.2. Для реализации своих прав Пользователь направляет запрос Оператору через контактные данные, указанные на сайте. Оператор отвечает на запрос в течение 10 рабочих дней.
9. Трансграничная передача персональных данных
9.1. Оператор до начала осуществления трансграничной передачи персональных данных обязан убедиться в надежной защите прав субъектов персональных данных на территории иностранного государства.
9.2. Трансграничная передача персональных данных на территории иностранных государств, не отвечающих требованиям Закона, может осуществляться только при наличии письменного согласия субъекта персональных данных.
9.3. Оператор может использовать Яндекс Метрику. Обработка данных при этом осуществляется на территории РФ. Использование сервисов, влекущих трансграничную передачу персональных данных, не осуществляется без дополнительного основания, предусмотренного законом.
10. Заключительные положения
10.1. Пользователь может получить любые разъяснения по вопросам обработки его персональных данных, обратившись к Оператору через контактные данные, указанные на сайте.
10.2. В данном документе будут отражены любые изменения политики обработки персональных данных Оператором. Политика действует бессрочно до замены ее новой версией.
10.3. Актуальная версия Политики в свободном доступе расположена в сети Интернет по адресу https://dostavka-vodi-krim.ru/privacy-policy/.

View File

@@ -1,4 +1,4 @@
<?php
<?php
/**
* Shared footer for test1-related WooCommerce pages.
*
@@ -17,7 +17,7 @@ if ( ! $blog_url ) {
<div class="container classic-footer-shell">
<div class="classic-footer-main">
<div class="classic-footer-col brand-col">
<a class="brand" href="<?php echo esc_url( home_url( '/' ) ); ?>" aria-label="Перейти на главную страницу">
<a class="brand" href="<?php echo esc_url( home_url( '/' ) ); ?>" aria-label="Перейти на главную страницу">
<span class="brand-mark" aria-hidden="true">
<!-- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 2C9 6.1 6 9.4 6 13.2C6 16.9 8.69 20 12 20C15.31 20 18 16.9 18 13.2C18 9.4 15 6.1 12 2Z" fill="currentColor"/>
@@ -25,38 +25,38 @@ if ( ! $blog_url ) {
<img src="<?php echo esc_url( home_url( '/wp-content/themes/twentytwentyfour/assets/images/logo.webp' ) ); ?>" alt="">
</span>
<span class="brand-text">
<strong>АкваЛиния</strong>
<span>вода с доставкой для Севастополя</span>
<strong>АкваЛиния</strong>
<span>вода с доставкой для Севастополя</span>
</span>
</a>
<p class="footer-description">Доставка воды в Севастополе для дома, офиса, кафе и фитнес-клубов. Вода 19 литров, питьевая и минеральная вода с удобным заказом на сайте.</p>
<p class="footer-description">Доставка воды в Севастополе для дома, офиса, кафе и фитнес-клубов. Вода 19 литров, питьевая и минеральная вода с удобным заказом на сайте.</p>
</div>
<div class="classic-footer-col">
<h3>Навигация</h3>
<h3>Навигация</h3>
<div class="footer-links">
<a href="<?php echo esc_url( home_url( '/#catalog' ) ); ?>">Каталог</a>
<a href="<?php echo esc_url( $blog_url ); ?>">Блог</a>
<a href="<?php echo esc_url( home_url( '/delivery/' ) ); ?>">Доставка воды в Севастополе</a>
<a href="<?php echo esc_url( home_url( '/service/' ) ); ?>">Доставка воды в офис</a>
<a href="<?php echo esc_url( home_url( '/faq/' ) ); ?>">Частые вопросы</a>
<a href="<?php echo esc_url( home_url( '/contacts/' ) ); ?>">Контакты</a>
<a href="<?php echo esc_url( home_url( '/#catalog' ) ); ?>">Каталог</a>
<a href="<?php echo esc_url( $blog_url ); ?>">Блог</a>
<a href="<?php echo esc_url( home_url( '/delivery/' ) ); ?>">Доставка воды в Севастополе</a>
<a href="<?php echo esc_url( home_url( '/service/' ) ); ?>">Доставка воды в офис</a>
<a href="<?php echo esc_url( home_url( '/faq/' ) ); ?>">Частые вопросы</a>
<a href="<?php echo esc_url( home_url( '/contacts/' ) ); ?>">Контакты</a>
</div>
</div>
<div class="classic-footer-col">
<h3>Документы</h3>
<h3>Документы</h3>
<div class="footer-legal">
<a href="#">Политика конфиденциальности</a>
<a href="#">Пользовательское соглашение</a>
<a href="#">Условия использования</a>
<a href="<?php echo esc_url( twentytwentyfour_privacy_policy_url() ); ?>">Политика конфиденциальности</a>
<a href="#">Пользовательское соглашение</a>
<a href="#">Условия использования</a>
</div>
</div>
</div>
<div class="footer-bottom classic-footer-bottom">
<span>© 2026 АкваЛиния. Все права защищены.</span>
<span>АкваЛиния — питьевая вода с доставкой в Севастополе</span>
<span>© 2026 АкваЛиния. Все права защищены.</span>
<span>АкваЛиния — питьевая вода с доставкой в Севастополе</span>
</div>
</div>
</footer>