This commit is contained in:
GP_DEV
2025-08-01 10:07:08 +03:00
parent 21562852ca
commit 7d7a28e789
54 changed files with 4554 additions and 6928 deletions

View File

@@ -43,8 +43,8 @@ add_action( 'after_setup_theme', 'tailpress_setup' );
function tailpress_enqueue_scripts() {
$theme = wp_get_theme();
wp_enqueue_style( 'tailpress', tailpress_asset( 'css/app.css' ), array(), $theme->get( 'Version' ) );
wp_enqueue_script( 'tailpress', tailpress_asset( 'js/app.js' ), array(), $theme->get( 'Version' ) );
wp_enqueue_style( 'tailpress', tailpress_asset( 'css/app.css' ), array(), '0.3' );
wp_enqueue_script( 'tailpress', tailpress_asset( 'js/app.js' ), array(), '0.3' );
}
add_action( 'wp_enqueue_scripts', 'tailpress_enqueue_scripts' );
@@ -196,6 +196,10 @@ function get_simple_menu_items($menu_name = 'Шапка сайта') {
$simple_items = array();
foreach ($menu_items as $item) {
if ($current_lang === 'gym' && $item->type === 'post_type_archive' && $item->object === 'training') {
continue;
}
$url = $item->url;
$title = $clean_title($item->title);
@@ -248,4 +252,268 @@ function add_dark_class_to_editor() {
add_action('admin_head', 'add_dark_class_to_editor');
function create_archive_acf_pages() {
if (!function_exists('acf_add_options_sub_page')) {
return;
}
// Получаем все кастомные типы записей с архивами
$post_types = get_post_types(array(
'public' => true,
'has_archive' => true,
'_builtin' => false
), 'objects');
foreach ($post_types as $post_type) {
acf_add_options_sub_page(array(
'page_title' => 'Настройки страницы ' . $post_type->labels->name,
'menu_title' => 'Настройки страницы',
'menu_slug' => $post_type->name . '-archive-settings',
'parent_slug' => 'edit.php?post_type=' . $post_type->name,
'capability' => 'edit_posts',
));
}
}
add_action('acf/init', 'create_archive_acf_pages');
function register_archive_acf_fields() {
if (!function_exists('acf_add_local_field_group')) {
return;
}
$languages = get_archive_languages();
$post_types = get_post_types(array(
'public' => true,
'has_archive' => true,
'_builtin' => false
), 'objects');
foreach ($post_types as $post_type) {
register_fields_for_archive($post_type, $languages);
}
}
add_action('acf/init', 'register_archive_acf_fields');
function get_archive_languages() {
if (function_exists('pll_languages_list')) {
$languages = array();
$pll_languages = pll_languages_list(array('fields' => array()));
foreach ($pll_languages as $lang) {
$languages[$lang->slug] = $lang->name;
}
return $languages;
}
return array(
'gym' => 'gym зал',
'fitness' => 'fitness зал'
);
}
function register_fields_for_archive($post_type, $languages) {
$post_type_name = $post_type->name;
$post_type_label = $post_type->labels->name;
$fields = array();
foreach ($languages as $lang_code => $lang_name) {
$fields[] = array(
'key' => 'field_tab_' . $post_type_name . '_' . $lang_code,
'label' => $lang_name,
'type' => 'tab',
'placement' => 'top',
);
// Поля для этого языка
$fields[] = array(
'key' => 'field_' . $post_type_name . '_h1_text_' . $lang_code,
'label' => 'Заголовок H1',
'name' => $post_type_name . '_h1_text_' . $lang_code,
'type' => 'wysiwyg',
'toolbar' => 'basic',
'media_upload' => 0,
'delay' => 0,
);
$fields[] = array(
'key' => 'field_' . $post_type_name . '_subtitle_' . $lang_code,
'label' => 'Подзаголовок',
'name' => $post_type_name . '_subtitle_' . $lang_code,
'type' => 'textarea',
'rows' => 3,
);
if ($post_type_name === 'trainer') {
$fields[] = array(
'key' => 'field_' . $post_type_name . '_team_photo_' . $lang_code,
'label' => 'Фото команды',
'name' => $post_type_name . '_team_photo_' . $lang_code,
'type' => 'image',
'return_format' => 'array',
'preview_size' => 'medium',
);
$fields[] = array(
'key' => 'field_' . $post_type_name . '_description_' . $lang_code,
'label' => 'Описание страницы',
'name' => $post_type_name . '_description_' . $lang_code,
'type' => 'textarea',
'rows' => 5,
);
}
}
acf_add_local_field_group(array(
'key' => 'group_' . $post_type_name . '_archive',
'title' => 'Настройки страницы ' . $post_type_label,
'fields' => $fields,
'location' => array(
array(
array(
'param' => 'options_page',
'operator' => '==',
'value' => $post_type_name . '-archive-settings',
),
),
),
));
}
function get_archive_field($post_type, $field_name, $default = '') {
if (!function_exists('get_field')) {
return $default;
}
$current_lang = function_exists('pll_current_language') ? pll_current_language() : 'ru';
$field_key = $post_type . '_' . $field_name . '_' . $current_lang;
$value = get_field($field_key, 'option');
return $value ? $value : $default;
}
function checkTelForSpam($phone_value)
{
$clean_phone = preg_replace('/\D/', '', $phone_value);
if (substr($clean_phone, 0, 1) === '8') {
$clean_phone = '7' . substr($clean_phone, 1);
}
if (strlen($clean_phone) !== 11 || substr($clean_phone, 0, 1) !== '7') {
return false;
}
return true;
}
function maspik_custom_validate_fluentforms_tel($errorMessage, $field, $formData, $fields, $form)
{
$fieldName = $field['name'];
if (empty($formData[$fieldName])) {
return $errorMessage;
}
$field_value = $formData[$fieldName];
$valid = checkTelForSpam($field_value);
if (!$valid) {
$errorMessage = "Введите корректный номер телефона";
}
return $errorMessage;
}
add_filter('fluentform/validate_input_item_phone', 'maspik_custom_validate_fluentforms_tel', 10, 5);
function cookie_popup_enqueue_scripts() {
wp_enqueue_script('jquery');
$custom_css = "
.page-block-shadow {
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.08);
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
}
.red-button-shadow {
box-shadow: 0 4px 16px rgba(224, 30, 46, 0.25), 0 2px 4px rgba(224, 30, 46, 0.1);
transition: all 0.2s ease;
}
.red-button-shadow:hover {
box-shadow: 0 6px 20px rgba(224, 30, 46, 0.35), 0 3px 6px rgba(224, 30, 46, 0.15);
transform: translateY(-1px);
}
.red-button-shadow:active {
transform: translateY(0);
box-shadow: 0 2px 8px rgba(224, 30, 46, 0.3);
}
";
wp_add_inline_style('wp-block-library', $custom_css);
}
add_action('wp_enqueue_scripts', 'cookie_popup_enqueue_scripts');
function cookie_popup_html() {
?>
<div id="cookiePopup" class="fixed bottom-[16px] left-[16px] right-[16px] min-[768px]:left-auto min-[768px]:right-[16px] max-[480px]:left-[8px] max-[480px]:right-[8px] max-[480px]:bottom-[8px] p-[24px] max-[480px]:p-[16px] rounded-[1.6rem] page-block-shadow z-[9999] transform translate-y-[100%] opacity-[0] transition-all duration-[500ms] ease-out">
<div class="mb-[16px] text-[14px] leading-[1.5]">
Мы используем файлы cookie  чтобы сайт работал быстрее.
</div>
<button
id="acceptCookiesBtn"
class="!max-w-fit h-[40px] max-[768px]:text-[16px] cursor-pointer mx-auto px-[14px] !no-underline transition red-gradient-hover gap-[12px] w-full rounded-[90px] flex items-center justify-center "
>
<span class="max-[768px]:text-[16px] font-[600] text-[18px] leading-[195%] text-[#f8f8f8]">Хорошо</span>
</button>
</div>
<script>
jQuery(document).ready(function($) {
checkCookieConsent();
$('#acceptCookiesBtn').on('click', function() {
acceptCookies();
});
function checkCookieConsent() {
const consent = localStorage.getItem('cookieConsent');
if (!consent) {
setTimeout(showCookiePopup, 500);
}
}
function showCookiePopup() {
$('#cookiePopup').removeClass('translate-y-[100%] opacity-[0]').addClass('translate-y-[0] opacity-[100]');
}
function acceptCookies() {
$('#cookiePopup').addClass('translate-y-[100%] opacity-[0]').removeClass('translate-y-[0] opacity-[100]');
localStorage.setItem('cookieConsent', 'accepted');
enableAnalytics();
}
function enableAnalytics() {
}
});
</script>
<?php
}
add_action('wp_footer', 'cookie_popup_html');
?>