From 2212de91f00d35ef26726f74e2467469fa5085ac Mon Sep 17 00:00:00 2001 From: Dekart Deploy Bot Date: Tue, 19 May 2026 11:43:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=87=D0=B8=D1=81=D0=BA=D1=82=D0=B0=20?= =?UTF-8?q?=D0=BC=D1=83=D1=81=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .ssh_key_for_web | 7 - .ssh_key_for_web.pub | 1 - .../dekart/functions.php.bak.20260508_084227 | 965 ------------------ .../dekart/page-camp.php.bak.20260511-141210 | 769 -------------- .../dekart/page-camp.php.bak.20260511-141749 | 769 -------------- 5 files changed, 2511 deletions(-) delete mode 100644 .ssh_key_for_web delete mode 100644 .ssh_key_for_web.pub delete mode 100644 wp-content/themes/dekart/functions.php.bak.20260508_084227 delete mode 100644 wp-content/themes/dekart/page-camp.php.bak.20260511-141210 delete mode 100644 wp-content/themes/dekart/page-camp.php.bak.20260511-141749 diff --git a/.ssh_key_for_web b/.ssh_key_for_web deleted file mode 100644 index dbe2a96..0000000 --- a/.ssh_key_for_web +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACAVIzu3dhfAF9rGLT+6HvrPXGZazG71LqDOKhZFCi4WKQAAAJjlqm3K5apt -ygAAAAtzc2gtZWQyNTUxOQAAACAVIzu3dhfAF9rGLT+6HvrPXGZazG71LqDOKhZFCi4WKQ -AAAEBo4HFL34i9aRbrMs1cKTl1UNyKMYl39gy1RvOUfFAzeBUjO7d2F8AX2sYtP7oe+s9c -ZlrMbvUuoM4qFkUKLhYpAAAAEHdlYi1naXQtcHVzaC1kZXYBAgMEBQ== ------END OPENSSH PRIVATE KEY----- diff --git a/.ssh_key_for_web.pub b/.ssh_key_for_web.pub deleted file mode 100644 index ff60ca8..0000000 --- a/.ssh_key_for_web.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBUjO7d2F8AX2sYtP7oe+s9cZlrMbvUuoM4qFkUKLhYp web-git-push-dev diff --git a/wp-content/themes/dekart/functions.php.bak.20260508_084227 b/wp-content/themes/dekart/functions.php.bak.20260508_084227 deleted file mode 100644 index 7eedcde..0000000 --- a/wp-content/themes/dekart/functions.php.bak.20260508_084227 +++ /dev/null @@ -1,965 +0,0 @@ - _x( 'Категории курсов', 'taxonomy general name' ), - 'singular_name' => _x( 'Категория курсов', 'taxonomy singular name' ), - 'search_items' => __( 'Поиск курсов по категории' ), - 'all_items' => __( 'Все категории курсов' ), - 'parent_item' => __( 'Родительская категория курсов' ), - 'parent_item_colon' => __( 'Родителькая категория курсов:' ), - 'edit_item' => __( 'Редактировать категорию' ), - 'update_item' => __( 'Обновить категорию' ), - 'add_new_item' => __( 'Добавить новую категорию' ), - 'new_item_name' => __( 'Новая категория' ), - 'menu_name' => __( 'Категории курсов' ), - ); - register_taxonomy('courses', array('course'), array( - 'hierarchical' => true, - 'labels' => $labels, - 'show_ui' => true, - 'show_admin_column' => true, - 'query_var' => true, - 'rewrite' => array( 'slug' => 'courses' ), - )); -} -add_action( 'init', 'create_course' ); -function create_course() { - register_post_type( 'course', - array( - 'labels' => array( - 'name' => 'Курсы', - 'singular_name' => 'Курс', - 'add_new' => 'Добавить курс', - 'add_new_item' => 'Добавить курс', - 'edit' => 'Редактировать курс', - 'edit_item' => 'Редактировать курс', - 'new_item' => 'Новый курс', - 'view' => 'Смотреть курс', - 'view_item' => 'Смотреть курс', - 'search_items' => 'Поиск курсов', - 'not_found' => 'Курсы не найдены', - 'not_found_in_trash' => 'В корзине нет курсов', - 'parent' => 'Родительский курс' - ), - 'public' => true, - 'exclude_from_search'=> false, - 'menu_position' => 12, - 'supports' => array( 'title' ), - 'publicly_queryable' => true, - 'menu_icon' => 'dashicons-welcome-learn-more', - 'taxonomies' => array( 'courses' ), - 'has_archive' => false - ) - ); -} -/* --- ##Cources## --- */ - -/* --- trainingCategory --- */ -add_action( 'init', 'create_trainingCategory_hierarchical_taxonomy', 0 ); -function create_trainingCategory_hierarchical_taxonomy() { - $labels = array( - 'name' => _x( 'Категории', 'Категория обучения учителя' ), - 'singular_name' => _x( 'Категория', 'Категория' ), - 'search_items' => __( 'Поиск категории' ), - 'all_items' => __( 'Все категории' ), - 'parent_item' => __( 'Родительская категория' ), - 'parent_item_colon' => __( 'Родительская категория:' ), - 'edit_item' => __( 'Редактировать категорию' ), - 'update_item' => __( 'Обновить категорию' ), - 'add_new_item' => __( 'Добавить новую категорию' ), - 'new_item_name' => __( 'Новая категория' ), - 'menu_name' => __( 'Категории' ), - ); - register_taxonomy('trainingCategory', array('teacher'), array( - 'hierarchical' => true, - 'labels' => $labels, - 'show_ui' => true, - 'show_admin_column' => true, - 'query_var' => true, - 'rewrite' => false, // Отключаем перезапись URL - )); -} - -// ✅ Приоритет 5 — регистрация CPT teacher ДО инициализации Carbon Fields -add_action( 'init', 'create_teacher', 5 ); -function create_teacher() { - register_post_type( 'teacher', - array( - 'labels' => array( - 'name' => 'Преподаватели', - 'singular_name' => 'Преподаватель', - 'add_new' => 'Добавить преподавателя', - 'add_new_item' => 'Добавить преподавателя', - 'edit' => 'Редактировать преподавателя', - 'edit_item' => 'Редактировать преподавателя', - 'new_item' => 'Новый преподаватель', - 'view' => 'Смотреть преподавателя', - 'view_item' => 'Смотреть преподавателя', - 'search_items' => 'Поиск преподавателей', - 'not_found' => 'Преподаватели не найдены', - 'not_found_in_trash' => 'В корзине нет преподавателей', - 'parent' => 'Родительский преподаватель' - ), - 'public' => true, - 'exclude_from_search'=> false, - 'menu_position' => 12, - 'show_in_rest' => true, - 'supports' => array( 'title', 'thumbnail' ), - 'publicly_queryable' => true, - 'menu_icon' => 'dashicons-admin-users', - 'taxonomies' => array( 'subject' ), - 'has_archive' => false - ) - ); -} -/* --- ##Teacher## --- */ - -/* --- Reviews --- */ -add_action( 'init', 'create_reviews' ); -function create_reviews() { - register_post_type( 'reviews', - array( - 'labels' => array( - 'name' => 'Отзывы', - 'singular_name' => 'Отзыв', - 'add_new' => 'Добавить отзыв', - 'add_new_item' => 'Добавить отзыв', - 'edit' => 'Редактировать отзыв', - 'edit_item' => 'Редактировать отзыв', - 'new_item' => 'Новый отзыв', - 'view' => 'Смотреть отзыв', - 'view_item' => 'Смотреть отзыв', - 'search_items' => 'Поиск отзывов', - 'not_found' => 'Отзывы не найдены', - 'not_found_in_trash' => 'В корзине нет отзывов', - 'parent' => 'Родительский отзыв' - ), - 'public' => true, - 'exclude_from_search'=> true, - 'menu_position' => 13, - 'supports' => array( 'title' ), - 'publicly_queryable' => false, - 'menu_icon' => 'dashicons-format-status', - 'has_archive' => false - ) - ); -} - -use Carbon_Fields\Container; -use Carbon_Fields\Field; - -add_action( 'carbon_fields_register_fields', 'add_carbon' ); -function add_carbon() { - - // ==================================================== - // Настройки темы - // ==================================================== - Container::make( 'theme_options', 'Настройка темы ДЕКАРТ' ) - ->add_tab('Основные', array( - Field::make( 'text', 'site_name', 'Название учебного центра: (используйте в названии только одинарный кавычки)' ), - Field::make( 'text', 'site_phone', 'Телефон:' ), - Field::make( 'text', 'site_phone_multi', 'Телефон (многоканальный):' ), - Field::make( 'text', 'site_mail', 'Почта для связи:' ), - Field::make( 'text', 'site_index', 'Почтовый индекс:' ), - Field::make( 'text', 'site_region', 'Область:' ), - Field::make( 'text', 'site_city', 'Город:' ), - Field::make( 'text', 'site_address', 'Адрес:' ), - Field::make( 'text', 'site_map_link', 'Ссылка на карту:' ), - Field::make( 'text', 'site_location', 'Координаты адреса (для яндекc карт):' ), - Field::make( 'text', 'site_frame_reviews', 'Ссылка на страницу с отзывами:' ), - Field::make( 'textarea', 'site_bitrix_script', 'script (формы) БИТРИКС24:' ), - Field::make( 'textarea', 'site_bitrix_vacancies', 'script (для формы связаться с нами) БИТРИКС24:' ), - Field::make( 'checkbox', 'check_banner', 'Отображать плашку со скидкой на формах "Запись на бесплатное пробное занятие"' ) - ->set_option_value( 'yes' ), - Field::make( 'checkbox', 'check_btn_discont', 'Не показывать кнопку "Стоимость ак. часа со скидкой"' ) - ->set_option_value( 'yes' ), - Field::make( 'text', 'text_banner', 'Текст в плашке:' ) - ->set_default_value('Всем записавшимся до 10 сентября
скидка 10% на весь учебный год!'), - )) - ->add_tab('Контент', array( - Field::make( 'textarea', 'teachers_block', 'Текст в блоке "Наша команда":' ), - )) - ->add_tab('Цены и скидки', array( - Field::make( 'checkbox', 'early_bird_discount', 'Выводить строку "Скидка за раннюю запись.' ) - ->set_option_value( 'yes' ), - Field::make( 'text', 'price_hour1', 'Стоимость ак. часа один предмет:' ) - ->set_attribute( 'type', 'number' ), - Field::make( 'text', 'price_hour2', 'Стоимость ак. часа два предмета:' ) - ->set_attribute( 'type', 'number' ), - Field::make( 'text', 'price_hour3', 'Стоимость ак. часа три предмета:' ) - ->set_attribute( 'type', 'number' ), - Field::make( 'text', 'price_hour4', 'Стоимость ак. часа четыре и более предметов:' ) - ->set_attribute( 'type', 'number' ), - Field::make( 'text', 'price_hour_discount1', 'Стоимость ак. часа один предмет со скидкой:' ) - ->set_attribute( 'type', 'number' ), - Field::make( 'text', 'price_hour_discount2', 'Стоимость ак. часа два предмета со скидкой:' ) - ->set_attribute( 'type', 'number' ), - Field::make( 'text', 'price_hour_discount3', 'Стоимость ак. часа три предмета со скидкой:' ) - ->set_attribute( 'type', 'number' ), - Field::make( 'text', 'price_hour_discount4', 'Стоимость ак. часа четыре и более предметов со скидкой:' ) - ->set_attribute( 'type', 'number' ), - )) - ->add_tab('Социальные сети:', array( - Field::make( 'text', 'social_header_wt', 'ссылка на WhatsApp в шапке сайта' ), - Field::make( 'text', 'social_wt', 'ссылка на WhatsApp на странице "Контакты"' ), - Field::make( 'complex', 'social_media', 'Социальная сеть' ) - ->add_fields( array( - Field::make( 'text', 'social_media_name', 'Название:' ) - ->set_width( 100 ), - Field::make( 'image', 'social_media_img', 'Логотип:' ) - ->set_width( 20 ), - Field::make( 'text', 'social_media_link', 'Cсылка:' ) - ->set_width( 80 ), - )), - )) - ->add_tab('Галерея', array( - Field::make( 'complex', 'slider_img', 'Галерея изображений учебного центра' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'image', 'img', 'Фотография:' ), - )), - )); - - // ==================================================== - // Доп поля для всех страниц - // ==================================================== - Container::make('post_meta', 'Дополнительные поля') - ->where('post_type', '=', 'page') - ->where('post_id', '!=', 64) - ->add_fields(array( - Field::make( 'image', 'banner_img_desktop', 'Изображение для баннера (десктопная версия)' ) - ->help_text( 'Размер изображения (желательно) 1295px на 454px' ) - ->set_width( 15 ), - Field::make( 'image', 'banner_img_mobile', 'Изображение для баннера (мобильная версия)' ) - ->help_text( 'Размер изображения (желательно) 450px на 225px' ) - ->set_width( 15 ), - Field::make( 'text', 'banner_h1', 'текст для H1' ) - ->set_width( 100 ), - Field::make( 'text', 'banner_text', 'Дополнительный текст под H1' ) - ->set_width( 100 ), - Field::make( 'complex', 'page_breadcrumbs', 'Хлебные крошки' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'text', 'breadcrumbs_name', 'Название крошки:' ) - ->set_width( 50 ), - Field::make( 'text', 'breadcrumbs_link', 'Ссылка крошки:' ) - ->set_width( 50 ) - ->set_default_value('#'), - )), - )); - - // ==================================================== - // Доп поля для категории Курсов - // ==================================================== - Container::make( 'term_meta', 'Дополнительные поля к Курсам' ) - ->where( 'term_taxonomy', '=', 'courses' ) - ->show_on_level(1) - ->where( 'term_level', '=', 1 ) - ->add_fields( array( - Field::make( 'image', 'snippet', 'Изображение для сниппета:' ) - ->set_width( 100 ), - Field::make( 'image', 'banner_img_desktop', 'Изображение для баннера (десктопная версия)' ) - ->help_text( 'Размер изображения (желательно) 1920px на 1030px' ) - ->set_width( 15 ), - Field::make( 'image', 'banner_img_mobile', 'Изображение для баннера (мобильная версия)' ) - ->help_text( 'Размер изображения (желательно) 390px на 550px' ) - ->set_width( 15 ), - Field::make( 'textarea', 'banner_content', 'Текстовый контент баннера' ) - ->set_width( 70 ), - Field::make( 'text', 'title_product', 'Заголовок блока курсов:' ) - ->set_width( 100 ), - )); - - // ==================================================== - // Уникальное имя контейнера Главной Страницы - // ==================================================== - Container::make('post_meta', 'Настройки Главной Страницы') - ->where('post_template', '=', 'front-page.php') - ->add_fields(array( - Field::make( 'textarea', 'block_text_1', 'Текст для блока Частная школа в Щелково "Декарт"' ), - Field::make( 'image', 'main_banner_img_desktop', 'Изображение рекламного баннера (десктопная версия)' ) - ->help_text( 'Размер изображения (желательно) 1185px на 190px' ) - ->set_width( 15 ), - Field::make( 'image', 'main_banner_img_mobile', 'Изображение рекламного баннера (мобильная версия)' ) - ->help_text( 'Размер изображения (желательно) 390px на 550px' ) - ->set_width( 15 ), - Field::make( 'text', 'main_banner_link', 'УРЛ баннера:' ) - ->set_default_value('#'), - )); - - // ==================================================== - // Доп поля для страницы начальной школы - // ==================================================== - Container::make('post_meta', 'Настройки Начальной Школы') - ->where('post_template', '=', 'page-school.php') - ->add_fields(array( - Field::make( 'textarea', 'teachers_block', 'Текст в блоке "Наша команда":' ), - Field::make( 'image', 'main_banner_img_desktop', 'Изображение рекламного баннера (десктопная версия)' ) - ->help_text( 'Размер изображения (желательно) 1185px на 190px' ) - ->set_width( 15 ), - Field::make( 'image', 'main_banner_img_mobile', 'Изображение рекламного баннера (мобильная версия)' ) - ->help_text( 'Размер изображения (желательно) 390px на 550px' ) - ->set_width( 15 ), - Field::make( 'text', 'main_banner_link', 'УРЛ баннера:' ) - ->set_default_value('#'), - Field::make( 'textarea', 'block_text_1', 'Текст для блока "Персональный план развития для каждого ученика"' ), - Field::make( 'textarea', 'block_text_2', 'Текст для блока - Почему начальная частная школа "Декарт", ‌а не государственная?' ), - Field::make( 'textarea', 'block_text_3', 'Текст для блока "Семейные классы в Щелково"' ), - Field::make( 'complex', 'questions', 'Блок вопросы и ответы' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'textarea', 'questions_question', 'Текст вопроса' ) - ->set_width( 30 ), - Field::make( 'textarea', 'questions_answer', 'Текст ответа' ) - ->set_width( 70 ), - )), - )); - - // ==================================================== - // Доп поля для страницы "ВСЕ КУРСЫ" - // ==================================================== - Container::make('post_meta', 'Настройки Страницы Все Курсы') - ->where('post_template', '=', 'page-course.php') - ->add_fields(array( - Field::make( 'image', 'banner_img_desktop', 'Изображение для баннера (десктопная версия)' ) - ->help_text( 'Размер изображения (желательно) 1920px на 440px' ) - ->set_width( 15 ), - Field::make( 'image', 'banner_img_mobile', 'Изображение для баннера (мобильная версия)' ) - ->help_text( 'Размер изображения (желательно) 450px на 225px' ) - ->set_width( 15 ), - )); - - // ==================================================== - // Доп поля для страницы "ВАКАНСИИ" - // ==================================================== - Container::make('post_meta', 'Настройки Страницы ВАКАНСИИ') - ->where('post_template', '=', 'page-vacancies.php') - ->add_fields(array( - Field::make( 'complex', 'vacancies', 'Вакансии учебного центра:' ) - ->add_fields( array( - Field::make( 'text', 'vacancie_name', 'Название вакансии:' ), - Field::make( 'text', 'vacancie_link', 'Ссылка на страницу вакансии:' ), - )) - )); - - // ==================================================== - // Доп поля для страницы "КОНТАКТЫ" - // ==================================================== - Container::make('post_meta', 'Настройки Страницы Контакты') - ->where('post_template', '=', 'page-contacts.php') - ->add_fields(array( - Field::make( 'image', 'img_school', 'Изображение школы:' ) - )); - - // ==================================================== - // Доп поля для категории (ПРЕДМЕТ) - // ==================================================== - Container::make('term_meta', 'Category Properties') - ->where('term_taxonomy', '=', 'subject') - ->show_on_level(1) - ->where('term_level', '=', 1) - ->add_fields(array( - Field::make('text', 'subject_h1', 'Заголовок H1:') - ->set_width( 100 ) - )); - - // ==================================================== - // Доп поля для сущностей reviews (ОТЗЫВ) - // ==================================================== - Container::make('post_meta', 'Поля для отзыва') - ->where('post_type', '=', 'reviews') - ->add_fields(array( - Field::make( 'radio', 'review_type', 'Тип отзыва' ) - ->set_options( [ - 'camp' => 'О лагере', - 'school' => 'О школе', - 'primary' => 'О начальной школе', - ] ) - ->set_default_value( 'school' ) - ->set_help_text( 'Выберите тип отзыва' ), - Field::make( 'image', 'review_avatar', 'Автар:' ) - ->set_width( 15 ), - Field::make( 'text', 'review_star', 'Оценка:' ) - ->set_attribute( 'type', 'number' ), - Field::make( 'textarea', 'review_text', 'Текст отзыва:' ) - ->set_width( 100 ), - Field::make('association', 'review_teacher', 'Выберите преподавателя:') - ->set_width( 32 ) - ->set_types(array( - array( - 'type' => 'post', - 'post_type' => 'teacher', - ) - )) - ->set_required(true) - ->set_max(1) - ->help_text( 'выбирается только один' ), - )); - - // ==================================================== - // Доп поля для записей teacher - // ==================================================== - Container::make( 'post_meta', 'Поля для преподавателя' ) - ->where( 'post_type', '=', 'teacher' ) - ->add_fields( array( - Field::make( 'text', 'teacher_direction', 'Направление преподавателя (текст в под фото):' ), - Field::make( 'image', 'teacher_avatar', 'Автар:' ) - ->set_width( 15 ), - Field::make( 'textarea', 'teacher_description', 'Дескрипшн преподавателя' ) - ->set_width( 75 ), - Field::make( 'textarea', 'teacher_about', 'О себе:' ), - Field::make( 'textarea', 'teacher_education', 'Образование:' ), - Field::make( 'textarea', 'teacher_add_education', 'Дополнительное образование:' ), - Field::make( 'text', 'teacher_rating', 'Оценка преподавателя' ) - ->set_width( 10 ) - ->set_default_value('5'), - Field::make( 'complex', 'teacher_subjects', 'Предметы обучения' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'text', 'teacher_subjects_title', 'Укажите заголовок предмета' ) - ->set_width( 50 ) - ->set_required(true) - ->help_text( 'Например: Репетитор по математике' ), - Field::make( 'textarea', 'select_direction', 'Укажите все направления преподавателя:' ) - ->help_text( 'Пример: <span>Математика</span><span>Русский язык</span>'), - Field::make('association', 'select_category', 'Укажите категрии') - ->set_width( 100 ) - ->set_types(array( - array( - 'type' => 'term', - 'taxonomy' => 'trainingCategory', - ) - )) - ->help_text( 'В списке указаны все возможные категрии в обучении, выберите необходимые' ), - )), - Field::make( 'complex', 'certificates', 'Дипломы и сертификаты' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'image', 'certificates_foto', 'Изображение' ) - )) - ->help_text( 'Добавьте изображение дипломов и сертификатов преподавателя' ), - Field::make( 'text', 'teacher_video', 'Ссылка на видеопрезентацию' ) - ->set_width( 100 ) - ->help_text( 'Укажите ссылку на видео в youtube. Пример: <iframe src="https://vk.com/video_ext.php?oid=-43228812&id=456240170hd=2" width="853" height="480" allow="autoplay; encrypted-media; fullscreen; picture-in-picture;" frameborder="0" allowfullscreen></iframe>' ), - Field::make( 'complex', 'questions', 'Блок вопросы и ответы' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'textarea', 'questions_question', 'Текст вопроса' ) - ->set_width( 30 ), - Field::make( 'textarea', 'questions_answer', 'Текст ответа' ) - ->set_width( 70 ), - )), - )); - - // ==================================================== - // Уникальное имя контейнера Продлёнки - // ==================================================== - Container::make('post_meta', 'Настройки Продлёнки') - ->where('post_template', '=', 'page-after-school.php') - ->add_tab('Общие', array( - Field::make( 'text', 'as_address', 'Наш адрес:' ), - Field::make( 'text', 'as_price', 'Цена:' ), - )) - ->add_tab('Педагоги', array( - Field::make( 'complex', 'as_mentors', 'Педагоги' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'image', 'mentor_foto', 'Фотография:' ) - ->set_width( 15 ), - Field::make( 'text', 'mentor_name', 'ФИО:' ) - ->set_width( 30 ), - Field::make( 'text', 'mentor_directions', 'Описание:' ) - ->set_width( 55 ), - )) - )) - ->add_tab('Распорядок дня', array( - Field::make( 'textarea', 'as_routine', 'Блок "Распорядок дня":' ), - )) - ->add_tab('Отзывы', array( - Field::make( 'complex', 'as_reviews', 'Отзывы клиентов:' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'image', 'review_avatar', 'Автар:' ) - ->set_width( 15 ), - Field::make( 'text', 'review_name', 'Имя:' ) - ->set_width( 30 ), - Field::make( 'text', 'review_star', 'Оценка:' ) - ->set_width( 15 ) - ->set_attribute( 'type', 'number' ), - Field::make( 'textarea', 'review_text', 'Текст отзыва:' ) - ->set_width( 100 ), - )), - )) - ->add_tab('Вопросы-Ответы', array( - Field::make( 'complex', 'as_questions', 'Блок вопросы и ответы' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'textarea', 'questions_question', 'Текст вопроса' ) - ->set_width( 30 ), - Field::make( 'textarea', 'questions_answer', 'Текст ответа' ) - ->set_width( 70 ), - )), - )) - ->add_tab('Фото', array( - Field::make( 'complex', 'as_fotos', 'Фотографии:' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'image', 'foto', 'Фото' ) - )), - )) - ->add_tab('Битрикс', array( - Field::make( 'textarea', 'as_bitrix_script', 'script (формы) БИТРИКС24:' ), - )); - - // ==================================================== - // Доп поля для страницы "ГОРОДСКОЙ ЛАГЕРЬ" - // ==================================================== - Container::make('post_meta', 'Настройки Городской Лагерь') - ->where('post_template', '=', 'page-camp.php') - ->add_tab('Hero (новый дизайн)', array( - Field::make( 'image', 'banner_img', 'Фото в Hero-секции (главное изображение):' ) - ->set_help_text( 'Рекомендуемый размер: 840×560 px, WebP. Будет автоматически обрезано до 840px.' ), - Field::make( 'image', 'hero_img_mobile', 'Фото Hero для мобильных (опционально):' ) - ->set_help_text( 'Рекомендуемый размер: 480×320 px, WebP. Если не заполнено — используется главное фото.' ), - Field::make( 'text', 'hero_title_h1', 'Заголовок H1 (первая часть):' ) - ->set_default_value( 'Mind-Blowing Innovation.' ), - Field::make( 'text', 'hero_title_span', 'Заголовок span (вторая часть, цветная):' ) - ->set_default_value( 'Big Summer Fun!' ), - Field::make( 'textarea', 'banner_text', 'Текст под заголовком:' ) - ->set_default_value( 'Городской лагерь для детей 7–14 лет: наука, творчество и настоящие приключения каждый день' ), - Field::make( 'separator', 'hero_cta_sep', 'Кнопки' ), - Field::make( 'text', 'hero_btn_primary', 'Текст главной кнопки:' ) - ->set_default_value( 'Записаться на пробный день' ), - Field::make( 'text', 'hero_btn_secondary', 'Текст второй кнопки:' ) - ->set_default_value( 'Посмотреть программу' ), - Field::make( 'text', 'hero_btn_primary_link', 'Ссылка с главной кнопки (ID смены или URL):' ) - ->set_default_value( '#programs' ), - Field::make( 'text', 'hero_btn_secondary_link', 'Ссылка с второй кнопки:' ) - ->set_default_value( '#programs' ), - Field::make( 'separator', 'hero_search_sep', 'Форма поиска лагеря' ), - Field::make( 'text', 'hero_search_title', 'Заголовок формы поиска:' ) - ->set_default_value( 'Find the Camp Galileo Closest to You' ), - Field::make( 'text', 'hero_search_placeholder', 'Плейсхолдер поля поиска:' ) - ->set_default_value( 'Search by Zip Code' ), - Field::make( 'separator', 'hero_metrics_sep', 'Метрики доверия' ), - Field::make( 'text', 'hero_metric_1_icon', 'Иконка метрики 1 (emoji):' ) - ->set_default_value( '🏆' ), - Field::make( 'text', 'hero_metric_1_text', 'Текст метрики 1:' ) - ->set_default_value( '12 лет в городе' ), - Field::make( 'text', 'hero_metric_2_icon', 'Иконка метрики 2 (emoji):' ) - ->set_default_value( '👶' ), - Field::make( 'text', 'hero_metric_2_text', 'Текст метрики 2:' ) - ->set_default_value( '2 500+ счастливых детей' ), - Field::make( 'text', 'hero_metric_3_icon', 'Иконка метрики 3 (emoji):' ) - ->set_default_value( '⭐' ), - Field::make( 'text', 'hero_metric_3_text', 'Текст метрики 3:' ) - ->set_default_value( '4.9 / 5 — рейтинг от родителей' ), - )) - ->add_tab('Дополнительный баннер', array( - Field::make( 'image', 'banner_add_img', 'Фоновое изображение баннера' ), - Field::make( 'text', 'banner_add_title', 'Текст заголовка:' ), - Field::make( 'textarea', 'banner_add_text', 'Текст под заголовком:' ), - Field::make( 'text', 'banner_add_text_min', 'Сноска (под кнопкой):' ) - )) - ->add_tab('Дополнительный баннер-2', array( - Field::make( 'image', 'banner_add_img2', 'Фоновое изображение баннера' ), - Field::make( 'text', 'banner_add_title2', 'Текст заголовка:' ), - Field::make( 'textarea', 'banner_add_text2', 'Текст под заголовком:' ), - Field::make( 'text', 'banner_add_text_min2', 'Сноска (под кнопкой):' ) - )) - ->add_tab('Мы предлагаем', array( - Field::make( 'complex', 'suggestions', 'Блок "Что мы предлагаем"' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'image', 'suggestions_img', 'Изображение для баннера (десктопная версия)' ), - Field::make( 'text', 'suggestions_title', 'Текст заголовка:' ), - Field::make( 'textarea', 'suggestions_text', 'Текст под заголовком:' ) - )), - )) - ->add_tab('Программы', array( - Field::make( 'text', 'price_half_day', 'Стоимость за половину дня:' ) - ->set_attribute( 'type', 'number' ), - Field::make( 'text', 'price_full_day', 'Стоимость за весь день:' ) - ->set_attribute( 'type', 'number' ), - Field::make( 'complex', 'programs', 'Блок "Весенние и летние программы"' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'image', 'programs_img', 'Изображение для баннера (десктопная версия)' ), - Field::make( 'text', 'programs_title', 'Текст заголовка:' ), - Field::make( 'text', 'programs_date', 'Даты проведения:' ), - Field::make( 'textarea', 'programs_text', 'Описание в карточке:' ), - Field::make( 'text', 'programs_price', 'Стоимость:' ) - ->set_attribute( 'type', 'number' ) - ->set_width( 30 ), - Field::make( 'text', 'programs_days', 'Количество дней:' ) - ->set_width( 30 ), - Field::make( 'rich_text', 'programs_content', 'Описание для всплывающего окна:' ), - )), - )) - ->add_tab('Наставники', array( - Field::make( 'complex', 'mentors', 'Наставники' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make('association', 'mentor', 'Выберите наставника') - ->set_width( 32 ) - ->set_types(array( - array( - 'type' => 'post', - 'post_type' => 'teacher', - ) - )) - ->set_max(1) - ->help_text( 'выбирается только один наставник для вкладки' ), - Field::make( 'text', 'mentor_job', 'Должность:' ), - Field::make( 'complex', 'mentor_directions', 'Направления наставника:' ) - ->add_fields( array( - Field::make( 'text', 'direction_name', 'Название направления:' ), - )), - Field::make( 'text', 'mentor_experience', 'Опыт работы в сфере образования:' ), - )) - )) - ->add_tab('Распорядок дня', array( - Field::make( 'complex', 'routine', 'Блок "Распорядок дня"' ) - ->add_fields( array( - Field::make( 'text', 'routine_time', 'Время:' ) - ->set_width( 15 ), - Field::make( 'text', 'routine_title', 'Название мероприятия:' ) - ->set_width( 40 ), - Field::make( 'textarea', 'routine_text', 'Описание мероприятия:' ) - ->set_width( 45 ), - )) - )) - ->add_tab('Фотографии', array( - Field::make( 'complex', 'fotos', 'Блок с фотографиями' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'image', 'foto', 'Фотография:' ) - )), - Field::make( 'rich_text', 'fotos_content', 'Текстовый контент:' ), - Field::make( 'text', 'fotos_link_vk', 'Ссылка на ВК:' ) - ->set_default_value('#') - )) - ->add_tab('Вопросы-Ответы', array( - Field::make( 'complex', 'questions', 'Блок вопросы и ответы' ) - ->set_layout( 'tabbed-horizontal' ) - ->add_fields( array( - Field::make( 'textarea', 'questions_question', 'Текст вопроса' ) - ->set_width( 30 ), - Field::make( 'textarea', 'questions_answer', 'Текст ответа' ) - ->set_width( 70 ), - )), - )) - ->add_tab('Контакты', array( - Field::make( 'text', 'contact_address', 'Адрес:' ), - Field::make( 'text', 'contact_location', 'Координаты адреса (для яндекc карт):' ), - Field::make( 'text', 'contact_location_text', 'Название метки на карте' ), - Field::make( 'text', 'contact_tel', 'Телефон' ), - Field::make( 'text', 'contact_mail', 'Електронная почта:' ), - Field::make( 'complex', 'social_media', 'Социальная сеть' ) - ->add_fields( array( - Field::make( 'text', 'social_media_name', 'Название:' ) - ->set_width( 100 ), - Field::make( 'image', 'social_media_img', 'Логотип:' ) - ->set_width( 20 ), - Field::make( 'text', 'social_media_link', 'Cсылка:' ) - ->set_width( 80 ), - )), - )) - ->add_tab('Битрикс', array( - Field::make( 'textarea', 'camp_bitrix_script', 'script (формы) БИТРИКС24:' ), - )); -} - -// функция получения id курса по его названию -function get_post_by_title($page_title) { - $query = new WP_Query( - [ - 'post_type' => 'course', - 'title' => $page_title, - 'post_status' => 'publish', - 'posts_per_page' => 1, - 'update_post_term_cache' => false, - 'update_post_meta_cache' => false, - 'orderby' => 'post_date ID', - 'order' => 'ASC', - 'no_found_rows' => true, - 'ignore_sticky_posts' => true, - ]); - wp_reset_postdata(); - if ( $query->post ) return $query->post->ID; - else return null; -} - -// функция случайного цвета -function rand_color() { - return sprintf('#%06X', mt_rand(0, 0xFFFFFF)); -} - -add_theme_support( 'post-thumbnails' ); - -add_action('pre_get_posts', 'exclude_custom_taxonomy_posts'); -function exclude_custom_taxonomy_posts($query) { - if (!is_admin() && $query->is_main_query() && ($query->is_tax('trainingCategory') || $query->is_tax('direction'))) { - $query->set_404(); - } -} - -function add_og_image() { - $term = get_queried_object(); - if ($term->term_id) { - $snippet = carbon_get_term_meta( $term->term_id, 'snippet' ); - if ($snippet != '') echo '' . "\n"; - } -} -add_action( 'wp_head', 'add_og_image' ); - -function yoastVariableToTitle($post_id) { - $yoast_title = get_post_meta($post_id, '_yoast_wpseo_title', true); - $title = strstr($yoast_title, '%%', true); - if (empty($title)) { - $title = get_the_title($post_id); - } - $wpseo_titles = get_option('wpseo_titles'); - $sep_options = WPSEO_Option_Titles::get_instance()->get_separator_options(); - if (isset($wpseo_titles['separator']) && isset($sep_options[$wpseo_titles['separator']])) { - $sep = $sep_options[$wpseo_titles['separator']]; - } else { - $sep = '-'; - } - $site_title = get_bloginfo('name'); - $meta_title = $title . ' ' . $sep . ' ' . $site_title; - return $meta_title; -} - -function replaceQuotes($text) { - $text = str_replace(['"'], "'", $text); - return $text; -} - -function enqueue_template_specific_styles() { - if ( is_page_template('page-camp.php') ) { - wp_enqueue_style( - 'template-specific-style', - get_template_directory_uri() . '/assets/css/camp.css', - array(), - '1.0' - ); - wp_enqueue_script( - 'camp-script', - get_template_directory_uri() . '/assets/js/camp.js', - NULL, - '1.0.0', - true - ); - } - if ( is_page_template('page-after-school.php') ) { - wp_enqueue_style( - 'template-after-style', - get_template_directory_uri() . '/assets/css/after-school.css', - array(), - '1.0' - ); - } -} -add_action('wp_enqueue_scripts', 'enqueue_template_specific_styles'); - -add_shortcode( 'get_form_bitrix', 'form_bitrix' ); -function form_bitrix( $atts, $content = null ) { - return carbon_get_theme_option( 'site_bitrix_script' ); -} - -add_shortcode( 'get_reviews', 'sc_reviews' ); -function sc_reviews( $atts ) { - $atts = shortcode_atts( [ - 'type' => 'school', - ], $atts ); - set_query_var( 'type', $atts['type'] ); - ob_start(); - load_template( locate_template( '/template-parts/reviews.php' ), false ); - return ob_get_clean(); -} - -add_shortcode( 'get_teachers', 'sc_teachers' ); -function sc_teachers( $atts, $content = null ) { - ob_start(); - set_query_var( 'sc_teachers', '1' ); - load_template( locate_template( '/template-parts/teachers.php' ), false ); - return ob_get_clean(); -} - -function fix_page_1_in_pagination( $link ) { - $reviews_page_id = 91; - $root_url = get_permalink( $reviews_page_id ); - if ( substr( $root_url, -1 ) !== '/' ) { - $root_url .= '/'; - } - if ( isset($_GET['filter']) ) { - $root_url = add_query_arg('filter', esc_attr($_GET['filter']), $root_url); - } - $page_1_url_full = get_pagenum_link(1); - if (substr($page_1_url_full, -1) !== '/') { - $page_1_url_full .= '/'; - } - $canonical_root_url = get_permalink($reviews_page_id); - if (substr($canonical_root_url, -1) !== '/') { - $canonical_root_url .= '/'; - } - if (isset($_GET['filter'])) { - $canonical_root_url = add_query_arg('filter', esc_attr($_GET['filter']), $canonical_root_url); - } - $link = str_replace( - 'href="' . esc_url($page_1_url_full) . '"', - 'href="' . esc_url($canonical_root_url) . '"', - $link - ); - $link = str_replace( - 'href="' . esc_url(get_pagenum_link(1)) . '"', - 'href="' . esc_url($canonical_root_url) . '"', - $link - ); - return $link; -} -add_filter( 'paginate_links', 'fix_page_1_in_pagination' ); - -remove_action('wp_head', 'wp_generator'); -remove_action('wp_head', 'rest_output_link_wp_head'); -remove_action('wp_head', 'wp_oembed_add_discovery_links'); -remove_action('wp_head', 'wp_shortlink_wp_head'); -remove_action('wp_head', 'adjacent_posts_rel_link_wp_head'); -remove_action('template_redirect', 'rest_output_link_header', 11); - -function dekart_disable_emojis() { - remove_action('wp_head', 'print_emoji_detection_script', 7); - remove_action('admin_print_scripts', 'print_emoji_detection_script'); - remove_action('wp_print_styles', 'print_emoji_styles'); - remove_action('admin_print_styles', 'print_emoji_styles'); - remove_filter('the_content_feed', 'wp_staticize_emoji'); - remove_filter('comment_text_rss', 'wp_staticize_emoji'); - remove_filter('wp_mail', 'wp_staticize_emoji_for_email'); - add_filter('tiny_mce_plugins', 'dekart_disable_emojis_tinymce'); - add_filter('wp_resource_hints', 'dekart_disable_emojis_remove_dns_prefetch', 10, 2); -} -add_action('init', 'dekart_disable_emojis'); - -function dekart_disable_emojis_tinymce($plugins) { - if (is_array($plugins)) { - return array_diff($plugins, array('wpemoji')); - } - return array(); -} - -function dekart_disable_emojis_remove_dns_prefetch($urls, $relation_type) { - if ('dns-prefetch' === $relation_type) { - $emoji_svg_url = apply_filters('emoji_svg_url', 'https://s.w.org/images/core/emoji/'); - $urls = array_diff($urls, array($emoji_svg_url)); - } - return $urls; -} - -// ==================================================== -// ✅ Оптимизация скриптов — defer только на фронтенде -// ==================================================== -function dekart_add_defer_to_scripts($tag, $handle, $src) { - // Не деферим скрипты в админке, AJAX и REST запросах - if ( is_admin() || wp_doing_ajax() || ( defined('REST_REQUEST') && REST_REQUEST ) ) { - return $tag; - } - $no_defer = array( - 'jquery-core', - 'jquery', - 'carbon-fields-script', - 'wp-api-request', - 'wp-element', - 'wp-components', - ); - if (in_array($handle, $no_defer)) { - return $tag; - } - if (strpos($tag, 'defer') !== false || strpos($tag, 'async') !== false) { - return $tag; - } - return str_replace(' - - - - - - -
- - carbon_get_post_meta( $post_id, 'hero_title_h1' ) ?: 'Детский лагерь Декарт.', - 'span' => carbon_get_post_meta( $post_id, 'hero_title_span' ) ?: 'Яркое лето без забот!', - 'btn_text' => carbon_get_post_meta( $post_id, 'hero_btn_primary' ) ?: 'Записаться на пробный день', - 'image_id' => carbon_get_post_meta( $post_id, 'banner_img' ), -]; - -$metrics = [ - [ - 'img_id' => carbon_get_post_meta( $post_id, 'hero_metric_1_img' ), - 'number' => carbon_get_post_meta( $post_id, 'hero_metric_1_number' ) ?: '12', - 'label' => carbon_get_post_meta( $post_id, 'hero_metric_1_label' ) ?: 'лет в городе', - 'default_icon' => get_template_directory_uri() . '/assets/images/doodles/icon-home.png', - ], - [ - 'img_id' => carbon_get_post_meta( $post_id, 'hero_metric_2_img' ), - 'number' => carbon_get_post_meta( $post_id, 'hero_metric_2_number' ) ?: '2 500+', - 'label' => carbon_get_post_meta( $post_id, 'hero_metric_2_label' ) ?: 'счастливых детей', - 'default_icon' => get_template_directory_uri() . '/assets/images/doodles/icon-bulb.png', - ], - [ - 'img_id' => carbon_get_post_meta( $post_id, 'hero_metric_3_img' ), - 'number' => carbon_get_post_meta( $post_id, 'hero_metric_3_number' ) ?: '4.9 / 5', - 'label' => carbon_get_post_meta( $post_id, 'hero_metric_3_label' ) ?: 'рейтинг от родителей', - 'default_icon' => get_template_directory_uri() . '/assets/images/doodles/icon-award.png', - ], -]; - - -?> - - -
-
-
-
-
- 'about-us__image', - 'loading' => 'lazy', - 'alt' => 'Фото детского лагеря Декарт' - ] ); - else : - echo '
- - - - - - Добавьте фото -
'; - endif; - ?> - - -
-
-
-

Лето, которое не хочется ставить на паузу

-
- -
- - -
- -
-
-
-
-
-

Почему мамы выбирают Dekart: дети бегут сюда сами

-

Никаких уговоров по утрам. Никаких «забери меня». Только горящие глаза и «а можно ещё?»

-
$item) { - $suggestions_title = $item['suggestions_title']; - $suggestions_text = $item['suggestions_text']; - $icon_file = $icons[$index % count($icons)]; - ?>
-
- -
-

-

-
-
-
-
-
-

Цифры, которые говорят сами за себя

-

Мы создаём среду, где каждый ребёнок раскрывает свой потенциал

-
- -
-
- -
-

6,5−11 лет

-

возраст

-
- -
-
- -
-

до 10 детей

-

каждая группа

-
- -
-
- -
-

на выбор

-

время посещения

-
- -
-
- -
-

от

-

стоимость недели

-
- -
-
-
- -
-
-

Летние программы

-
- -
- <?php echo get_post_meta($programs_img, '_wp_attachment_image_alt', true); ?> -
-

-

-

- - - -
-
- -
-
-
- - - -
- - - -

Приводите ребёнка, когда вам удобно

-
-
-
-
-

Половина дня

- -
-

Время пребывания — на выбор (до обеда или до вечера)

-
-
-
-
-
с 8:30 до 13:30
-
-

за 5 дней пребывания

-
-
-
-
-
-
с 13:30 до 18:30
-
-

за 5 дней пребывания

-
-
- -

Тематическая неделя на выбор

-
- -
    -
  • 5 дней пребывания в клубе
  • -
  • творческие занятия и мастер-классы 1 раз в день
  • -
  • умные прогулки 1 раз в день (в зависимости от погодные условий)
  • -
-
-
-
-
-

Полный день

- -
-

Пребывание в клубе с утра до вечера, дополнительные активности

-
-
-
-
-
с 8:30 до 18:30
-
-

за 5 дней пребывания

-
-
- -

Тематическая неделя на выбор

-
- -
    -
  • 5 дней пребывания в клубе
  • -
  • творческие занятия и мастер-классы 2 раза в день
  • -
  • умные прогулки 2 раза в день (в зависимости от погодные условий)
  • -
  • тематические экскурсии каждую неделю
  • -
-
-
-
- -
-

Наши наставники и ведущие мастер-классов

-
- " . esc_html($direction['direction_name'])."";} - } - $teacher_foto = carbon_get_post_meta($mentor[0]['id'] , 'teacher_avatar'); - ?> -
- - - - <?php echo get_post_meta( $teacher_foto, '_wp_attachment_image_alt', true ); ?> - - - - - -
- -
- -
- -
-

Распорядок дня в клубе

-
- -
-
-
-
-

-

-

-
-
- -
-
- -
-

Наши фотографии

-
- - $alt -
"; - } - } ?> -
-
-
- -
-
-
-
-
-
- -
-
-
-
- -
- -
-

Что говорят о нас родители

- 'review_type', - 'value' => 'camp', - 'compare' => '=' - ] - ]; - - ?> -
-
-
-
- -1, - 'post_type' => 'reviews', - 'orderby' => 'date', - 'order' => 'DESC', - 'suppress_filters' => true, - 'meta_query' => $key, - ); - $the_query = new WP_Query($args); - if ($the_query->have_posts()) : - while ($the_query->have_posts()) : $the_query->the_post(); - - $review_id = get_the_ID(); - - $review_date = get_the_date( 'd.m.Y'); - $review_level = carbon_get_post_meta( $review_id, 'review_level' ); - - $avatar = carbon_get_post_meta( $review_id, 'review_avatar' ); - - $stars = carbon_get_post_meta( $review_id, 'review_star' ); - $tekst_otzyva = carbon_get_post_meta( $review_id, 'review_text' ); - $prepodavatel = carbon_get_post_meta( $review_id, 'review_teacher' ); - - $add_class= "more"; - - if ( strlen($tekst_otzyva) < 350 ) $add_class= ""; - - if ( $tekst_otzyva ) : ?> -
-
-
-
- - <?php echo get_post_meta( $avatar, '_wp_attachment_image_alt', true ); ?> - -
-
-
-
-
-
-
- - - - - - -
-
- - -
-
-
- -
-
- -
-
-
- -
-
- - - -
-

Часто задаваемые вопросы

-
- - -
- " . esc_html($questions_question) . " - - - - - - - - -
-
-
" . wp_kses_post($questions_answer) . "
-
-
"; - if ($count % 2 === 0) { - $HTMcol1 .= $accordion_item; - } else { - $HTMcol2 .= $accordion_item; - } - $count++; - } - } - echo "
$HTMcol1
"; - echo "
$HTMcol2
"; - ?> - -
- -
- -

Контакты

-
-
-
Телефон:
- -
Почта:
- -
Адрес:
-
-
Наши соцсети:
-
- - - -
-
-
-
-
-
-
- -
- - - - - - - - - - -