From b8fb90200324b5bad5004b4676e7d44882cda5d8 Mon Sep 17 00:00:00 2001 From: Dekart Deploy Bot Date: Fri, 8 May 2026 13:33:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86?= =?UTF-8?q?=D0=B0=20=D0=BB=D0=B0=D0=B3=D0=B5=D1=80=D1=8F=20-=20=D1=81?= =?UTF-8?q?=D0=B5=D0=BA=D1=86=D0=B8=D1=8F=20HERO=20(=D0=BA=D0=BE=D0=BF?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=81=20=D1=80=D0=B5=D1=84=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D1=81=D0=B0).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wp-content/themes/dekart/assets/css/camp.css | 266 +++- .../dekart/assets/images/doodle-award.png | Bin 0 -> 3083 bytes .../dekart/assets/images/doodle-bulb.png | Bin 0 -> 2240 bytes .../dekart/assets/images/doodle-gears.svg | 52 + .../dekart/assets/images/doodle-home.png | Bin 0 -> 2916 bytes .../dekart/assets/images/doodle-pencils.svg | 34 + .../assets/images/doodles/doodle-award.svg | 4 + .../assets/images/doodles/doodle-bulb.svg | 1 + .../images/doodles/doodle-circle-orange.svg | 3 + .../assets/images/doodles/doodle-gears.svg | 4 + .../assets/images/doodles/doodle-pencils.svg | 10 + .../assets/images/doodles/doodle-plane.svg | 11 + .../assets/images/doodles/doodle-star.svg | 1 + .../images/doodles/hero-doodle-gears.svg | 52 + .../images/doodles/hero-doodle-pencils.svg | 34 + .../assets/images/doodles/icon-award.png | Bin 0 -> 3083 bytes .../assets/images/doodles/icon-bulb.png | Bin 0 -> 2240 bytes .../assets/images/doodles/icon-home.png | Bin 0 -> 2916 bytes .../themes/dekart/assets/images/icon-camp.svg | 1 + .../dekart/assets/images/icon-discount.svg | 1 + .../themes/dekart/assets/images/icon-kids.svg | 1 + wp-content/themes/dekart/camp-hero.php | 81 + wp-content/themes/dekart/functions.php | 292 +++- .../dekart/functions.php.bak.20260508_084227 | 965 ++++++++++++ wp-content/themes/dekart/header.php | 4 +- wp-content/themes/dekart/page-camp.php | 1332 +++++++++-------- 26 files changed, 2440 insertions(+), 709 deletions(-) create mode 100644 wp-content/themes/dekart/assets/images/doodle-award.png create mode 100644 wp-content/themes/dekart/assets/images/doodle-bulb.png create mode 100644 wp-content/themes/dekart/assets/images/doodle-gears.svg create mode 100644 wp-content/themes/dekart/assets/images/doodle-home.png create mode 100644 wp-content/themes/dekart/assets/images/doodle-pencils.svg create mode 100644 wp-content/themes/dekart/assets/images/doodles/doodle-award.svg create mode 100644 wp-content/themes/dekart/assets/images/doodles/doodle-bulb.svg create mode 100644 wp-content/themes/dekart/assets/images/doodles/doodle-circle-orange.svg create mode 100644 wp-content/themes/dekart/assets/images/doodles/doodle-gears.svg create mode 100644 wp-content/themes/dekart/assets/images/doodles/doodle-pencils.svg create mode 100644 wp-content/themes/dekart/assets/images/doodles/doodle-plane.svg create mode 100644 wp-content/themes/dekart/assets/images/doodles/doodle-star.svg create mode 100644 wp-content/themes/dekart/assets/images/doodles/hero-doodle-gears.svg create mode 100644 wp-content/themes/dekart/assets/images/doodles/hero-doodle-pencils.svg create mode 100644 wp-content/themes/dekart/assets/images/doodles/icon-award.png create mode 100644 wp-content/themes/dekart/assets/images/doodles/icon-bulb.png create mode 100644 wp-content/themes/dekart/assets/images/doodles/icon-home.png create mode 100644 wp-content/themes/dekart/assets/images/icon-camp.svg create mode 100644 wp-content/themes/dekart/assets/images/icon-discount.svg create mode 100644 wp-content/themes/dekart/assets/images/icon-kids.svg create mode 100644 wp-content/themes/dekart/camp-hero.php create mode 100644 wp-content/themes/dekart/functions.php.bak.20260508_084227 diff --git a/wp-content/themes/dekart/assets/css/camp.css b/wp-content/themes/dekart/assets/css/camp.css index 3b5f7de..29fd862 100644 --- a/wp-content/themes/dekart/assets/css/camp.css +++ b/wp-content/themes/dekart/assets/css/camp.css @@ -2190,4 +2190,268 @@ p { width: 27px; display: flex; } -} \ No newline at end of file +}/* ═══════════════════════════════════════════════ + HERO — Galileo-style (городской лагерь) + ═══════════════════════════════════════════════ */ + +.hero-media-search { + background-color: #f6f1e9; + overflow: hidden; + padding: 30px 0; + margin-left: -20px; + margin-right: -20px; +} +@media (min-width: 1024px) { + .hero-media-search { padding: 75px 0; } +} + +.hero-media-search .container { + max-width: 1216px; + margin: 0 auto; + padding: 0 24px; +} + +.hero-media-search__container { + align-items: stretch; + display: flex; + flex-direction: column; + gap: 20px; + justify-content: flex-start; +} +@media (min-width: 1024px) { + .hero-media-search__container { + align-items: center; + flex-direction: row; + gap: 40px; + justify-content: space-between; + } +} + +.hero-media-search .heading-1 { + letter-spacing: -.56px; + text-align: center; + font-size: 2.25rem; + font-family: 'Fredoka', sans-serif; + line-height: 1.1; + color: #1c2b2d; + margin: 0; +} +@media (min-width: 1024px) { + .hero-media-search .heading-1 { + font-size: 3.5rem; + text-align: left; + } +} +.hero-media-search .heading-1 span { + display: block; + letter-spacing: -1.68px; + line-height: 1.2; +} +.heading-highlight.blue span { color: #39b7ea; } + +.hero-media-search__content { + text-align: center; +} +@media (min-width: 1024px) { + .hero-media-search__content { + width: 420px; + text-align: left; + flex-shrink: 0; + } +} + +.hero-media-search__propositions.on-desktop { + display: flex; + gap: 0 25px; + justify-content: center; + margin: 15px 0 30px; +} +@media (min-width: 1024px) { + .hero-media-search__propositions.on-desktop { + justify-content: flex-start; + } +} +.hero-media-search__propositions.on-desktop .wrapper__propositions { + display: flex; + flex-direction: column; + align-items: center; + width: 100px; +} +.hero-media-search__propositions.on-desktop img { width: 58px; height: auto; } +.hero-media-search__propositions.on-desktop h3 { + font-weight: 800; + font-family: 'Fredoka', sans-serif; + font-size: 16px; + line-height: 1.2; + text-align: center; + color: #1c2b2d; + margin: 4px 0 0; +} +.hero-media-search__propositions.on-desktop p { + font-weight: 500; + font-family: 'Inter', sans-serif; + font-size: 14px; + line-height: 1.2; + text-align: center; + color: #555; + margin: 0; + text-transform: capitalize; +} + +.hero-media-search__form { text-align: center; } +@media (min-width: 1024px) { + .hero-media-search__form { text-align: left; } +} +.hero-media-search__form .heading-4 { + font-family: 'Inter', sans-serif; + font-size: 18px; + font-weight: 600; + color: #1c2b2d; + margin-bottom: 18px; +} + +.form__field { + display: flex; +} +.form__field input { + flex: 1; + padding: 12px 18px; + border: 2px solid #0c161f; + font-family: 'Inter', sans-serif; + font-size: 16px; + outline: none; + min-width: 0; + border-radius: 100px 0 0 100px; +} +.form__field input::placeholder { color: #999; } +.form__field .btn { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 12px 24px; + background-color: #39b7ea; + color: #fff; + border: 2px solid #0c161f; + border-left: none; + border-radius: 0 100px 100px 0; + font-family: 'Inter', sans-serif; + font-size: 16px; + font-weight: 700; + cursor: pointer; + white-space: nowrap; + margin: 0; + text-decoration: none; +} +.form__field .btn:hover { + background-color: #2a9fd8; +} + +.hero-media-search__media { width: 100%; } +@media (min-width: 1024px) { + .hero-media-search__media { + width: calc(100% - 460px); + min-width: 0; + } +} + +.hero-media-search__frame { + position: relative; + aspect-ratio: 16 / 9; + width: 100%; +} +@media (max-width: 991px) { + .hero-media-search__frame { aspect-ratio: 16 / 10; } +} + +.hero-media-search__image { + display: block; + width: 100%; + height: auto; + border: 5px solid #fff; + border-radius: 15px; + box-shadow: 0 0 20px 0 rgba(0,0,0,.15); + overflow: hidden; + object-fit: cover; + aspect-ratio: 16/9; +} +@media (min-width: 1024px) { + .hero-media-search__image { + border-width: 10px; + max-width: 840px; + } +} + +.hero-media-search__frame .doodle { + position: absolute; + object-fit: contain; +} +.hero-media-search__frame .doodle--top-left { + height: 79px; + width: 84px; + left: -30px; + top: -8px; +} +@media (min-width: 1024px) { + .hero-media-search__frame .doodle--top-left { + height: 172px; + width: 183px; + left: -47px; + top: -54px; + } +} +.hero-media-search__frame .doodle--bottom-right { + height: 100px; + width: 99px; + bottom: -34px; + right: -16px; +} +@media (min-width: 1024px) { + .hero-media-search__frame .doodle--bottom-right { + height: 196px; + width: 195px; + bottom: -46px; + right: -44px; + } +} + +.hero-media-search__propositions.on-mobile { + display: none; + gap: 0 25px; + justify-content: center; + margin: 30px 0 15px; +} +@media (max-width: 1023px) { + .hero-media-search__propositions.on-mobile { display: flex; } +} +.hero-media-search__propositions.on-mobile .wrapper__propositions { + display: flex; + flex-direction: column; + align-items: center; + width: 84px; +} +.hero-media-search__propositions.on-mobile img { width: 48px; height: auto; } +.hero-media-search__propositions.on-mobile h3 { + font-weight: 800; + font-family: 'Fredoka', sans-serif; + font-size: 14px; + line-height: 1.2; + text-align: center; + color: #1c2b2d; + margin: 4px 0 0; +} +.hero-media-search__propositions.on-mobile p { + font-weight: 500; + font-family: 'Inter', sans-serif; + font-size: 14px; + line-height: 1.2; + text-align: center; + color: #555; + margin: 0; +} + +.hero-media-search__wrapper .hero-media-search__form { + margin-top: 15px; +} +@media (min-width: 1024px) { + .hero-media-search__wrapper .hero-media-search__form { display: none; } +} diff --git a/wp-content/themes/dekart/assets/images/doodle-award.png b/wp-content/themes/dekart/assets/images/doodle-award.png new file mode 100644 index 0000000000000000000000000000000000000000..99af016a77ee459c60f078faa7f0fa7789a92455 GIT binary patch literal 3083 zcmV+m4D|DfP)Px%rcg{&MMrQ<|NsC0|NsC0|NsC0{{H^{{{H^{{{R2~ z{{H^`{r&#_{{H^{{QUg?|NsC0|NZ^_{{H^||NsC0|Nj2||NsC0_}LtFyg;Yo{{H>| z0095k0QtHM7#JAd-rhKp#vmXdJe}0;?(QH|aTq^U5D*YRKtR5}z8Y?@-`Tz}eW?{# zjRX%E5=nLh3Jw`(rQ+PdC~1u(UVjJ`9e;m+Qcy?`Dmg53n_pjF2OTfPz^R{~p9(BT zo}Qiv6&wsRQjd?1pPPv9>C10#Z_dunARikwG%zM6Bw$@pG>EqxNndn8pqYgV>sE`R0P=OFa zYJhxgeR^%KuCC(11AS}`)3gQg%mQFuRBvoxaBN=*Bs;IFl~PC&&&sgfrVfZ{5f?2# z3n)F1i+UhBMiLktkBoZ3kq?Y`4Be#;Ky!{rh^@P#8vM!y{Kp4HP*j?P3l2J7mvj+;d~605BS1bkUriH?Y!OgG6aohfL_$0?EEl)3 zo$Ry=Vo?%rU=MhNjC+iUcb>F(p0p=DPeMmb!^zBpq_t3kpmchEBQH2{c6+zKvS@UC zV3V+ik%^PD#VAi=aEX_In5Tc4r+A#EFiKfNJQQe*nKW*XG*oB1%D|Jbvu5mq#mazU z6Z^ml)SnLSy$Iv04FnGtPft&`oCqXDRdjc57$qtTD@FzuBs7P(_Rj*Dly@B)7}TE+ zjEH#D&b2=>7xA+VoOcm&SQNIhohv05Lqa@iz;9~+000(rQchCs;Ymb6RCwC$TK8KUM;b=Gn8YT&L#t1$dIJ?Kfdw)}fDDK( znmGpy#&&F6;w0ymp4{cqF6Azla=rK7d+)vXe)peb=bMpc7qr@y?fj7E$@`0W{LH@Z zykDCcLo<8!&dj&zb%Pal#?zg`+ zc+EcSwkpMke1h-pkAL!W0>Rfm@zDs^X8I9*hOu zv2O*08u+{vE3X$FJNS69v_)I|2v7p8Mln2Y9yJJ&&DGsyQI=*Wh1 zl3H#u+aYj-hj69M*-$YxyD6g674~cnWEc!rH8N4Q*4Du6Fu55bSxO&D1Hi(Qr!Nh! zt`1*1eLn!q_XvoINTpsa#zyNiSOkoIPg-Ixt&X%-F*5uhK$xbctJrY0qJh|9KR}3V zKP=H7W$Ya7B^b=0g>)oZq{U>=Dc~Ud09_bpUl+g@r&mf~fB3S~X~3q~qf=n7wDvHN z?IHidSx)-w0lCB_qJXQ?ziuE#W(x}ZiSduNbH=}mqC(-;QKpc_TH4h>ihI#P0Qot_ zUO2a38KzMzrT{Fu37lqK{9IsC$^Q>=W`z%iU74$={?&ar2}2I!8!ASrP;svtY{g2!`(THrWMYApo*Zhd2K58XbH0hfVM zCD-^7kLStD)9}@_AU{R02tIz}UIt+Xa4r{0awI&~Ye`v*sAU zJQ>xz4fcI$`G`{BJKsfqhE?ojo&$|p=k5l`k`1kLibLZkkRAI#!Z#H&^$R$;SQYKA z-v<^qo|n^PN3Y${#@NXc|9SCLs|;Vn$u;EGb8K3xjTV5CLZFg{hb4ipmdE4*Uqb;L zMHaiR^8jxPIr%W1`;3R-ha^N#DQ5PU@lcDR1GA3vU;yw&7m_F8R5b@bBLa`(3}W~o zYlEPkVYe3}gm>P6{Jn-INhhj=Fb?{z z(cv2OBX9g|fO@>6kcua|8?bN_#;9{Pl?3$Q3j<0h>3`qDVz}Xw5WlG30^W@V^3qr9 zIFy(~>Fh`~Hp8V0*?>TChYL~AZ^4QNQe<0@78nAV=`<|d_h6}1x_@Cl)FD(bQJ?~e z2(_Ts0K~~xzk(j$L`R^))sYE>GMR~hAVX%|MX{vULNglZ$B#Au5fW-56Ap(aNrVt< zdMywGF-W)&seHb_kc4b4{z+-?vz@LA;-Jrh2?s^eB||)k?}dp8<^I=PO60i(Z36|D z9P2PS5lRESQU*c~Jrwo{fqPxskOJP$S_S}}a})sJOk(!T;Ex60{Oxg9qCa=<>~?|p z5_^JZ8t_8iwGD|>921$IPIvz#?y8LfJ(X>m26`c-LXkSwEzRZExoRT;QOy^E0}Uiy zD)!^-OmX6|JOKE+{gB`W`sjCTC$T)2PWp$Y z0N{xNS)EsHHr8Ytss1GZh<1C)Tk6e~D8=8;C*^L8Whdt+O9!F=uyiK1!7S`iNiiZi zgr$HAj3>3o2PLL?sKEKz;(^0}DAt~-^hOF1#$HiKQiUW-G5=Sqi*W@%B6zGf0xZq7 zANh*|oL#Q4J|!OkMoiZliQFIA^PA&XFFn|56_FAS8&iS_}HaFRs!V~dMpk1uE+C&nrKUDbbO?Hz~!>)3pLwAIoprVl9;E!yc=3@V2oFA8) zTI&C1&156&P80Gd6aXXSR9?VipyWqolapxgQhUrA4MxVURG9KApTO7(!70u!hrwWP z=ogwb!)kUTIKMWu6&#A1)8cPj!D3gwb~*p`QLq_ny>=bQf6Xvht%h2E+iZB{e}cR$ Z@FM2lr~5wS{-OW?002ovPDHLkV1hH&v}phU literal 0 HcmV?d00001 diff --git a/wp-content/themes/dekart/assets/images/doodle-bulb.png b/wp-content/themes/dekart/assets/images/doodle-bulb.png new file mode 100644 index 0000000000000000000000000000000000000000..7390ebc36e1e2e95736aea0f323b3e5656d153f9 GIT binary patch literal 2240 zcmbuA`#%%M8s zO}Y2~)Z9i5EH5v^;czS#%j5Bu`vC76AdyIwm6dclJ-{8nrNLAOpi-#;0RenIzcL$O z_X9o$(4zs9$z-uuX4{|u$sRD10M#F`vO#KUDucn`a5#)4z$pffcSc-!v#79SH2qR) zG@wu@JEY(`-q8kO$rOLkSPangG6l2^lIR=%dX-ZG@Kujx^i0BEty-70@NdIau|yTD zTVrFR;Mb<9PYg8>E~$#tH8MTb+~>;sM30558k#or4irua5ojBKcW{_l0j-8vKlk5HMyC6=G z-8=xCTDcs6)tus)(V2WsDvQLRG&cH$1p=`1gOfeZ^VImFw^#D`VTJ!;HFJT9_pAg| z3$76yocCUF0>v$_h+ghk{kery+>2%x+#nTJzx|%|h{o@4O>`L9tYgNHy{WU{>B{4W z`s;3U*cm~z-Dq#3Ui{JAQ$>2}HBz4M{%X$fQn^hxxWD$NTugQw->3)=qBJo6-vO}gXk)7~7bNk%wS7vtm+wXqJGd-u#qPPf=0 z@QL!dEz(lTh-dGHGruelOIunxO>lWJX=7TMJ>}YQFMF86RN`UtxR>H?PShIJ;N}C* z#2O&;4+qn=-DhRzf>Cf)EALRDG24P^Yws=>0>ho>%KU@$HPX71>uH}}54;}p>+rL+y?9sTJ#+0v=7V;*srLlw z3L85~`afKcZ&Vuq;|qx_t!Qk{nzE-lnDs+txJe%WrXfl@OqNqPe&*=&t8Nesm}HmO zUp7{*&3|33gV^689x${}1TKNtQtc*jlH+AeQoKgn^ZVmwK-m|Wz0|-{NZUGeU+Hp0t*wVziP28c! zSB_`3K_{jpZgV|hP03-yB&=FO~^y9n+A8U%F9A; zT5%WSEI#cTexZNR3`Gb!8~7smBrW7b?np`@CP}$J(MH#LR!r6d^C+Fz*A}XOWU4(0 zb7IWnx=hN^yj~llX2Gkg!6J>dzFawO`d8+}HI*oljktN(T=XwcFzMuvIZeQ!)}hWw zV9@gbaxdb*ddVY$84~$YJKH{3G2bj0+KVa3B@--6LI>kn^37%EA!l*0G)#mG-uwVi zwGyZQ?O`Qwm$cKyJ`eA{>Xa#KE~G1ky?jb(R>q-qhzAkP4be|^

`kU5U->8CQ@9 zF|KsCpQhQB4CQD2K?;wJ%^aZpWJk+8FrP0NK&_|HQ-Xn4`^^Ffi^l$GQ3FQh>53&W zT@pd2>}JtgnsL|Mh6UbtsP{*|a+js#s}Ru=>Rh)WJ#sh3^R9MM9M{iW#5LlYhF(?7 zITSi%aZ+05itI`P1V%@zx7v0|+)(h5Q5FgY&XdV>;+ZfqA(3*KXak}j!miEsaX(zRY~daP~|A9Fq; zQDSx1%m?L+3x#V$L3H<5bP+gq45&BRiBg?YWk`jiVtf9r7 zw|6&UM+W|NiU1sdqfIY_6$%kB2p&YRmjS<`Msfu8Y z-CuP{zu-dh&DL~;SQN0_!oxnXJ9di5Xv(g~F=vjqXD3BajFC5>*@v6H5(X}_KF+3% zye}nWeX)_tRQ+eELX;`gr+zvov}Z4YP}^E+&5B5{{doc91eNXsD(vWGn~f6VFa>awaSr%PI4o|&6ox0Gs>h0yif#b6faVe$dwUqk$0e;z$KJ+2#DDku0lUInN zzvpBvdkhQ}`{!SRBa~JM#cIa!=7;Mz4~A9ep3F=&I=57*;rGZ(pG~g&dD5dcVi4>n zt<*~?G!nVY)AuPi8GiQ-nl2%%I`sG!4WtN~D(+^s^f?$i5y%~0CR@S{vHq3ZdxC0? z!u03`x$v4XaV;ubZ1owR({M(V%7cXqJ6Rw0-MU!lH_C|i z8A$p1*tb8Yg4LSRV5||@k-FLW1JczUFVqs;tnGPLsbtc}JH3^n=!}{5`lg00fNXHW zLzR>&uSn$bv@Gx|Ul@!E>-CxMd9;sPg-l)1jL7>c%|$Y+<#yv|2tRwSmhCq6O&)s^ pBUvhLs^(n9ju=ld*+NE5`%lpC?c4Vt8@BxrffK>az5yR__FrO2AP4{e literal 0 HcmV?d00001 diff --git a/wp-content/themes/dekart/assets/images/doodle-gears.svg b/wp-content/themes/dekart/assets/images/doodle-gears.svg new file mode 100644 index 0000000..ff2c400 --- /dev/null +++ b/wp-content/themes/dekart/assets/images/doodle-gears.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/themes/dekart/assets/images/doodle-home.png b/wp-content/themes/dekart/assets/images/doodle-home.png new file mode 100644 index 0000000000000000000000000000000000000000..67ab043289b832b7411324018f5b6e28571a4d47 GIT binary patch literal 2916 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/themes/dekart/assets/images/doodles/doodle-award.svg b/wp-content/themes/dekart/assets/images/doodles/doodle-award.svg new file mode 100644 index 0000000..53be8df --- /dev/null +++ b/wp-content/themes/dekart/assets/images/doodles/doodle-award.svg @@ -0,0 +1,4 @@ + + + + diff --git a/wp-content/themes/dekart/assets/images/doodles/doodle-bulb.svg b/wp-content/themes/dekart/assets/images/doodles/doodle-bulb.svg new file mode 100644 index 0000000..dca5124 --- /dev/null +++ b/wp-content/themes/dekart/assets/images/doodles/doodle-bulb.svg @@ -0,0 +1 @@ + diff --git a/wp-content/themes/dekart/assets/images/doodles/doodle-circle-orange.svg b/wp-content/themes/dekart/assets/images/doodles/doodle-circle-orange.svg new file mode 100644 index 0000000..b10a097 --- /dev/null +++ b/wp-content/themes/dekart/assets/images/doodles/doodle-circle-orange.svg @@ -0,0 +1,3 @@ + + + diff --git a/wp-content/themes/dekart/assets/images/doodles/doodle-gears.svg b/wp-content/themes/dekart/assets/images/doodles/doodle-gears.svg new file mode 100644 index 0000000..c9d6892 --- /dev/null +++ b/wp-content/themes/dekart/assets/images/doodles/doodle-gears.svg @@ -0,0 +1,4 @@ + + + + diff --git a/wp-content/themes/dekart/assets/images/doodles/doodle-pencils.svg b/wp-content/themes/dekart/assets/images/doodles/doodle-pencils.svg new file mode 100644 index 0000000..c2ecd6e --- /dev/null +++ b/wp-content/themes/dekart/assets/images/doodles/doodle-pencils.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/wp-content/themes/dekart/assets/images/doodles/doodle-plane.svg b/wp-content/themes/dekart/assets/images/doodles/doodle-plane.svg new file mode 100644 index 0000000..aaaf909 --- /dev/null +++ b/wp-content/themes/dekart/assets/images/doodles/doodle-plane.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/wp-content/themes/dekart/assets/images/doodles/doodle-star.svg b/wp-content/themes/dekart/assets/images/doodles/doodle-star.svg new file mode 100644 index 0000000..98c8a72 --- /dev/null +++ b/wp-content/themes/dekart/assets/images/doodles/doodle-star.svg @@ -0,0 +1 @@ + diff --git a/wp-content/themes/dekart/assets/images/doodles/hero-doodle-gears.svg b/wp-content/themes/dekart/assets/images/doodles/hero-doodle-gears.svg new file mode 100644 index 0000000..ff2c400 --- /dev/null +++ b/wp-content/themes/dekart/assets/images/doodles/hero-doodle-gears.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/themes/dekart/assets/images/doodles/hero-doodle-pencils.svg b/wp-content/themes/dekart/assets/images/doodles/hero-doodle-pencils.svg new file mode 100644 index 0000000..cd78413 --- /dev/null +++ b/wp-content/themes/dekart/assets/images/doodles/hero-doodle-pencils.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/themes/dekart/assets/images/doodles/icon-award.png b/wp-content/themes/dekart/assets/images/doodles/icon-award.png new file mode 100644 index 0000000000000000000000000000000000000000..99af016a77ee459c60f078faa7f0fa7789a92455 GIT binary patch literal 3083 zcmV+m4D|DfP)Px%rcg{&MMrQ<|NsC0|NsC0|NsC0{{H^{{{H^{{{R2~ z{{H^`{r&#_{{H^{{QUg?|NsC0|NZ^_{{H^||NsC0|Nj2||NsC0_}LtFyg;Yo{{H>| z0095k0QtHM7#JAd-rhKp#vmXdJe}0;?(QH|aTq^U5D*YRKtR5}z8Y?@-`Tz}eW?{# zjRX%E5=nLh3Jw`(rQ+PdC~1u(UVjJ`9e;m+Qcy?`Dmg53n_pjF2OTfPz^R{~p9(BT zo}Qiv6&wsRQjd?1pPPv9>C10#Z_dunARikwG%zM6Bw$@pG>EqxNndn8pqYgV>sE`R0P=OFa zYJhxgeR^%KuCC(11AS}`)3gQg%mQFuRBvoxaBN=*Bs;IFl~PC&&&sgfrVfZ{5f?2# z3n)F1i+UhBMiLktkBoZ3kq?Y`4Be#;Ky!{rh^@P#8vM!y{Kp4HP*j?P3l2J7mvj+;d~605BS1bkUriH?Y!OgG6aohfL_$0?EEl)3 zo$Ry=Vo?%rU=MhNjC+iUcb>F(p0p=DPeMmb!^zBpq_t3kpmchEBQH2{c6+zKvS@UC zV3V+ik%^PD#VAi=aEX_In5Tc4r+A#EFiKfNJQQe*nKW*XG*oB1%D|Jbvu5mq#mazU z6Z^ml)SnLSy$Iv04FnGtPft&`oCqXDRdjc57$qtTD@FzuBs7P(_Rj*Dly@B)7}TE+ zjEH#D&b2=>7xA+VoOcm&SQNIhohv05Lqa@iz;9~+000(rQchCs;Ymb6RCwC$TK8KUM;b=Gn8YT&L#t1$dIJ?Kfdw)}fDDK( znmGpy#&&F6;w0ymp4{cqF6Azla=rK7d+)vXe)peb=bMpc7qr@y?fj7E$@`0W{LH@Z zykDCcLo<8!&dj&zb%Pal#?zg`+ zc+EcSwkpMke1h-pkAL!W0>Rfm@zDs^X8I9*hOu zv2O*08u+{vE3X$FJNS69v_)I|2v7p8Mln2Y9yJJ&&DGsyQI=*Wh1 zl3H#u+aYj-hj69M*-$YxyD6g674~cnWEc!rH8N4Q*4Du6Fu55bSxO&D1Hi(Qr!Nh! zt`1*1eLn!q_XvoINTpsa#zyNiSOkoIPg-Ixt&X%-F*5uhK$xbctJrY0qJh|9KR}3V zKP=H7W$Ya7B^b=0g>)oZq{U>=Dc~Ud09_bpUl+g@r&mf~fB3S~X~3q~qf=n7wDvHN z?IHidSx)-w0lCB_qJXQ?ziuE#W(x}ZiSduNbH=}mqC(-;QKpc_TH4h>ihI#P0Qot_ zUO2a38KzMzrT{Fu37lqK{9IsC$^Q>=W`z%iU74$={?&ar2}2I!8!ASrP;svtY{g2!`(THrWMYApo*Zhd2K58XbH0hfVM zCD-^7kLStD)9}@_AU{R02tIz}UIt+Xa4r{0awI&~Ye`v*sAU zJQ>xz4fcI$`G`{BJKsfqhE?ojo&$|p=k5l`k`1kLibLZkkRAI#!Z#H&^$R$;SQYKA z-v<^qo|n^PN3Y${#@NXc|9SCLs|;Vn$u;EGb8K3xjTV5CLZFg{hb4ipmdE4*Uqb;L zMHaiR^8jxPIr%W1`;3R-ha^N#DQ5PU@lcDR1GA3vU;yw&7m_F8R5b@bBLa`(3}W~o zYlEPkVYe3}gm>P6{Jn-INhhj=Fb?{z z(cv2OBX9g|fO@>6kcua|8?bN_#;9{Pl?3$Q3j<0h>3`qDVz}Xw5WlG30^W@V^3qr9 zIFy(~>Fh`~Hp8V0*?>TChYL~AZ^4QNQe<0@78nAV=`<|d_h6}1x_@Cl)FD(bQJ?~e z2(_Ts0K~~xzk(j$L`R^))sYE>GMR~hAVX%|MX{vULNglZ$B#Au5fW-56Ap(aNrVt< zdMywGF-W)&seHb_kc4b4{z+-?vz@LA;-Jrh2?s^eB||)k?}dp8<^I=PO60i(Z36|D z9P2PS5lRESQU*c~Jrwo{fqPxskOJP$S_S}}a})sJOk(!T;Ex60{Oxg9qCa=<>~?|p z5_^JZ8t_8iwGD|>921$IPIvz#?y8LfJ(X>m26`c-LXkSwEzRZExoRT;QOy^E0}Uiy zD)!^-OmX6|JOKE+{gB`W`sjCTC$T)2PWp$Y z0N{xNS)EsHHr8Ytss1GZh<1C)Tk6e~D8=8;C*^L8Whdt+O9!F=uyiK1!7S`iNiiZi zgr$HAj3>3o2PLL?sKEKz;(^0}DAt~-^hOF1#$HiKQiUW-G5=Sqi*W@%B6zGf0xZq7 zANh*|oL#Q4J|!OkMoiZliQFIA^PA&XFFn|56_FAS8&iS_}HaFRs!V~dMpk1uE+C&nrKUDbbO?Hz~!>)3pLwAIoprVl9;E!yc=3@V2oFA8) zTI&C1&156&P80Gd6aXXSR9?VipyWqolapxgQhUrA4MxVURG9KApTO7(!70u!hrwWP z=ogwb!)kUTIKMWu6&#A1)8cPj!D3gwb~*p`QLq_ny>=bQf6Xvht%h2E+iZB{e}cR$ Z@FM2lr~5wS{-OW?002ovPDHLkV1hH&v}phU literal 0 HcmV?d00001 diff --git a/wp-content/themes/dekart/assets/images/doodles/icon-bulb.png b/wp-content/themes/dekart/assets/images/doodles/icon-bulb.png new file mode 100644 index 0000000000000000000000000000000000000000..7390ebc36e1e2e95736aea0f323b3e5656d153f9 GIT binary patch literal 2240 zcmbuA`#%%M8s zO}Y2~)Z9i5EH5v^;czS#%j5Bu`vC76AdyIwm6dclJ-{8nrNLAOpi-#;0RenIzcL$O z_X9o$(4zs9$z-uuX4{|u$sRD10M#F`vO#KUDucn`a5#)4z$pffcSc-!v#79SH2qR) zG@wu@JEY(`-q8kO$rOLkSPangG6l2^lIR=%dX-ZG@Kujx^i0BEty-70@NdIau|yTD zTVrFR;Mb<9PYg8>E~$#tH8MTb+~>;sM30558k#or4irua5ojBKcW{_l0j-8vKlk5HMyC6=G z-8=xCTDcs6)tus)(V2WsDvQLRG&cH$1p=`1gOfeZ^VImFw^#D`VTJ!;HFJT9_pAg| z3$76yocCUF0>v$_h+ghk{kery+>2%x+#nTJzx|%|h{o@4O>`L9tYgNHy{WU{>B{4W z`s;3U*cm~z-Dq#3Ui{JAQ$>2}HBz4M{%X$fQn^hxxWD$NTugQw->3)=qBJo6-vO}gXk)7~7bNk%wS7vtm+wXqJGd-u#qPPf=0 z@QL!dEz(lTh-dGHGruelOIunxO>lWJX=7TMJ>}YQFMF86RN`UtxR>H?PShIJ;N}C* z#2O&;4+qn=-DhRzf>Cf)EALRDG24P^Yws=>0>ho>%KU@$HPX71>uH}}54;}p>+rL+y?9sTJ#+0v=7V;*srLlw z3L85~`afKcZ&Vuq;|qx_t!Qk{nzE-lnDs+txJe%WrXfl@OqNqPe&*=&t8Nesm}HmO zUp7{*&3|33gV^689x${}1TKNtQtc*jlH+AeQoKgn^ZVmwK-m|Wz0|-{NZUGeU+Hp0t*wVziP28c! zSB_`3K_{jpZgV|hP03-yB&=FO~^y9n+A8U%F9A; zT5%WSEI#cTexZNR3`Gb!8~7smBrW7b?np`@CP}$J(MH#LR!r6d^C+Fz*A}XOWU4(0 zb7IWnx=hN^yj~llX2Gkg!6J>dzFawO`d8+}HI*oljktN(T=XwcFzMuvIZeQ!)}hWw zV9@gbaxdb*ddVY$84~$YJKH{3G2bj0+KVa3B@--6LI>kn^37%EA!l*0G)#mG-uwVi zwGyZQ?O`Qwm$cKyJ`eA{>Xa#KE~G1ky?jb(R>q-qhzAkP4be|^

`kU5U->8CQ@9 zF|KsCpQhQB4CQD2K?;wJ%^aZpWJk+8FrP0NK&_|HQ-Xn4`^^Ffi^l$GQ3FQh>53&W zT@pd2>}JtgnsL|Mh6UbtsP{*|a+js#s}Ru=>Rh)WJ#sh3^R9MM9M{iW#5LlYhF(?7 zITSi%aZ+05itI`P1V%@zx7v0|+)(h5Q5FgY&XdV>;+ZfqA(3*KXak}j!miEsaX(zRY~daP~|A9Fq; zQDSx1%m?L+3x#V$L3H<5bP+gq45&BRiBg?YWk`jiVtf9r7 zw|6&UM+W|NiU1sdqfIY_6$%kB2p&YRmjS<`Msfu8Y z-CuP{zu-dh&DL~;SQN0_!oxnXJ9di5Xv(g~F=vjqXD3BajFC5>*@v6H5(X}_KF+3% zye}nWeX)_tRQ+eELX;`gr+zvov}Z4YP}^E+&5B5{{doc91eNXsD(vWGn~f6VFa>awaSr%PI4o|&6ox0Gs>h0yif#b6faVe$dwUqk$0e;z$KJ+2#DDku0lUInN zzvpBvdkhQ}`{!SRBa~JM#cIa!=7;Mz4~A9ep3F=&I=57*;rGZ(pG~g&dD5dcVi4>n zt<*~?G!nVY)AuPi8GiQ-nl2%%I`sG!4WtN~D(+^s^f?$i5y%~0CR@S{vHq3ZdxC0? z!u03`x$v4XaV;ubZ1owR({M(V%7cXqJ6Rw0-MU!lH_C|i z8A$p1*tb8Yg4LSRV5||@k-FLW1JczUFVqs;tnGPLsbtc}JH3^n=!}{5`lg00fNXHW zLzR>&uSn$bv@Gx|Ul@!E>-CxMd9;sPg-l)1jL7>c%|$Y+<#yv|2tRwSmhCq6O&)s^ pBUvhLs^(n9ju=ld*+NE5`%lpC?c4Vt8@BxrffK>az5yR__FrO2AP4{e literal 0 HcmV?d00001 diff --git a/wp-content/themes/dekart/assets/images/doodles/icon-home.png b/wp-content/themes/dekart/assets/images/doodles/icon-home.png new file mode 100644 index 0000000000000000000000000000000000000000..67ab043289b832b7411324018f5b6e28571a4d47 GIT binary patch literal 2916 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 diff --git a/wp-content/themes/dekart/assets/images/icon-discount.svg b/wp-content/themes/dekart/assets/images/icon-discount.svg new file mode 100644 index 0000000..5a768c3 --- /dev/null +++ b/wp-content/themes/dekart/assets/images/icon-discount.svg @@ -0,0 +1 @@ + diff --git a/wp-content/themes/dekart/assets/images/icon-kids.svg b/wp-content/themes/dekart/assets/images/icon-kids.svg new file mode 100644 index 0000000..b199e2a --- /dev/null +++ b/wp-content/themes/dekart/assets/images/icon-kids.svg @@ -0,0 +1 @@ + diff --git a/wp-content/themes/dekart/camp-hero.php b/wp-content/themes/dekart/camp-hero.php new file mode 100644 index 0000000..7ab4772 --- /dev/null +++ b/wp-content/themes/dekart/camp-hero.php @@ -0,0 +1,81 @@ + +

diff --git a/wp-content/themes/dekart/functions.php b/wp-content/themes/dekart/functions.php index 072fa4d..b822552 100644 --- a/wp-content/themes/dekart/functions.php +++ b/wp-content/themes/dekart/functions.php @@ -535,65 +535,137 @@ function add_carbon() { // ==================================================== // Доп поля для страницы "ГОРОДСКОЙ ЛАГЕРЬ" // ==================================================== - Container::make('post_meta', 'Настройки Городской Лагерь') + Container::make('post_meta', '🏰 Настройки Городской Лагерь') ->where('post_template', '=', 'page-camp.php') - ->add_tab('Баннер', array( - Field::make( 'image', 'banner_img', 'Изображение для баннера' ), - Field::make( 'text', 'banner_title', 'Текст заголовка H1:' ), - Field::make( 'textarea', 'banner_text', 'Текст под заголовком:' ), - Field::make( 'text', 'banner_label1', 'Тестовая метка:' ) - ->set_default_value('6,5–11 лет'), - Field::make( 'text', 'banner_label2', 'Тестовая метка:' ) - ->set_default_value('мастер-классы'), - Field::make( 'text', 'banner_label3', 'Тестовая метка:' ) - ->set_default_value('коммуникация'), + ->add_tab('🎯 Hero — первый экран', array( + Field::make( 'separator', 'hero_media_sep', 'Изображения' ), + Field::make( 'image', 'banner_img', 'Фото на весь экран (десктоп)' ) + ->set_help_text( 'Рекомендуемый размер: 1920×1080 px. Формат: WebP. Дети в движении, эмоции, крупные планы.' ) + ->set_width( 50 ), + Field::make( 'image', 'hero_img_mobile', 'Фото на мобильных (опционально)' ) + ->set_help_text( 'Рекомендуемый размер: 480×320 px. WebP. Если не заполнено — автоматически используется основное.' ) + ->set_width( 50 ), + Field::make( 'separator', 'hero_titles_sep', 'Заголовки и текст' ), + Field::make( 'text', 'hero_title_h1', 'Заголовок H1 (первая часть)' ) + ->set_default_value( 'Лето, которое он запомнит навсегда' ) + ->set_width( 50 ) + ->set_help_text( 'Основной заголовок страницы. Эмоциональный, зацепляющий.' ), + Field::make( 'text', 'hero_title_span', 'Заголовок H1 (вторая часть, цветная)' ) + ->set_default_value( 'Big Summer Fun!' ) + ->set_width( 50 ) + ->set_help_text( 'Выделяется цветом на фоне основного.' ), + Field::make( 'textarea', 'banner_text', 'Подзаголовок (под H1)' ) + ->set_default_value( 'Городской лагерь для детей 7–14 лет: наука, творчество и настоящие приключения каждый день' ) + ->set_help_text( '1–2 предложения. Покажите выгоду для родителя.' ), + Field::make( 'text', 'banner_title', 'Заголовок H1 (для старого шаблона)' ) + ->set_default_value( 'Лето, которое он запомнит навсегда' ) + ->set_width( 100 ), + Field::make( 'text', 'banner_label1', 'Метка 1 на баннере' ) + ->set_default_value( '6,5–11 лет' ) + ->set_width( 33 ), + Field::make( 'text', 'banner_label2', 'Метка 2 на баннере' ) + ->set_default_value( 'мастер-классы' ) + ->set_width( 33 ), + Field::make( 'text', 'banner_label3', 'Метка 3 на баннере' ) + ->set_default_value( 'коммуникация' ) + ->set_width( 33 ), + Field::make( 'separator', 'hero_cta_sep', 'Кнопки и ссылки' ), + Field::make( 'text', 'hero_btn_primary', 'Текст главной кнопки (CTA)' ) + ->set_default_value( 'Записаться на пробный день' ) + ->set_width( 50 ) + ->set_help_text( 'Главное действие, к которому призываем. Лучше: конкретная выгода, а не действие.' ), + Field::make( 'text', 'hero_btn_primary_link', 'Ссылка главной кнопки' ) + ->set_default_value( '#programs' ) + ->set_width( 50 ) + ->set_help_text( 'URL или якорь (#) на секцию.' ), + Field::make( 'text', 'hero_btn_secondary', 'Текст второй кнопки' ) + ->set_default_value( 'Посмотреть программу' ) + ->set_width( 50 ) + ->set_help_text( 'Второстепенное действие, обычно outline-стиль.' ), + Field::make( 'text', 'hero_btn_secondary_link', 'Ссылка второй кнопки' ) + ->set_default_value( '#programs' ) + ->set_width( 50 ) + ->set_help_text( 'URL или якорь (#) на секцию.' ), + Field::make( 'separator', 'hero_search_sep', 'Форма поиска лагеря' ), + Field::make( 'separator', 'hero_metrics_sep', 'Метрики доверия (блок достижений)' ), + Field::make( 'text', 'hero_search_title', 'Заголовок формы поиска' ) + ->set_default_value( 'Найдите лагерь рядом с вами' ) + ->set_width( 50 ), + Field::make( 'text', 'hero_search_placeholder', 'Плейсхолдер поля поиска' ) + ->set_default_value( 'Ваш район или станция метро' ) + ->set_width( 50 ), + Field::make( 'image', 'hero_metric_1_img', 'Иконка метрики 1 (изображение)' ) + ->set_width( 30 ) + ->set_help_text( 'Рекомендуемый размер: 58x58 px. PNG/SVG.' ), + Field::make( 'text', 'hero_metric_1_number', 'Число метрики 1' ) + ->set_default_value( '90+' ) + ->set_width( 30 ), + Field::make( 'text', 'hero_metric_1_label', 'Подпись метрики 1' ) + ->set_default_value( 'Количество клубов' ) + ->set_width( 40 ), + Field::make( 'image', 'hero_metric_2_img', 'Иконка метрики 2 (изображение)' ) + ->set_width( 30 ) + ->set_help_text( 'Рекомендуемый размер: 58x58 px. PNG/SVG.' ), + Field::make( 'text', 'hero_metric_2_number', 'Число метрики 2' ) + ->set_default_value( '570K+' ) + ->set_width( 30 ), + Field::make( 'text', 'hero_metric_2_label', 'Подпись метрики 2' ) + ->set_default_value( 'Юных инноваторов' ) + ->set_width( 40 ), + Field::make( 'image', 'hero_metric_3_img', 'Иконка метрики 3 (изображение)' ) + ->set_width( 30 ) + ->set_help_text( 'Рекомендуемый размер: 58x58 px. PNG/SVG.' ), + Field::make( 'text', 'hero_metric_3_number', 'Число метрики 3' ) + ->set_default_value( '49K+' ) + ->set_width( 30 ), + Field::make( 'text', 'hero_metric_3_label', 'Подпись метрики 3' ) + ->set_default_value( 'Стипендий' ) + ->set_width( 40 ), )) - ->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', 'Блок "Что мы предлагаем"' ) + ->add_tab('💰 Программы и цены', array( + Field::make( 'separator', 'pricing_sep', 'Цены на пребывание' ), + Field::make( 'text', 'price_half_day', 'Стоимость за половину дня (в рублях)' ) + ->set_attribute( 'type', 'number' ) + ->set_width( 50 ) + ->set_help_text( 'Цена за 5 дней, например: 12900' ), + Field::make( 'text', 'price_full_day', 'Стоимость за полный день (в рублях)' ) + ->set_attribute( 'type', 'number' ) + ->set_width( 50 ) + ->set_help_text( 'Цена за 5 дней, например: 17900' ), + Field::make( 'separator', 'programs_sep', 'Тематические смены' ), + Field::make( 'complex', 'programs', 'Список программ (смен)' ) ->set_layout( 'tabbed-horizontal' ) + ->set_help_text( 'Добавьте каждую тематическую смену отдельной записью.' ) ->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', 'Стоимость:' ) + Field::make( 'image', 'programs_img', 'Изображение смены' ) + ->set_help_text( 'Рекомендуемый размер: 360×350 px.' ) + ->set_width( 100 ), + Field::make( 'text', 'programs_title', 'Название смены' ) + ->set_width( 50 ) + ->set_help_text( 'Например: «Космический десант»' ), + Field::make( 'text', 'programs_date', 'Даты проведения' ) + ->set_width( 50 ) + ->set_help_text( 'Например: «2–6 июня»' ), + Field::make( 'textarea', 'programs_text', 'Краткое описание (в карточке)' ) + ->set_width( 100 ) + ->set_help_text( '2–3 предложения.' ), + 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', 'Описание для всплывающего окна:' ), + ->set_width( 50 ), + Field::make( 'text', 'programs_days', 'Количество дней' ) + ->set_width( 50 ) + ->set_help_text( 'Например: «5 дней» или «7 дней»' ), + Field::make( 'rich_text', 'programs_content', 'Полное описание (в модальном окне)' ) + ->set_width( 100 ) + ->set_help_text( 'Полный текст программы для всплывающего окна.' ), )), )) - ->add_tab('Наставники', array( - Field::make( 'complex', 'mentors', 'Наставники' ) + ->add_tab('👨‍🏫 Наставники', array( + Field::make( 'complex', 'mentors', 'Список наставников лагеря' ) ->set_layout( 'tabbed-horizontal' ) + ->set_help_text( 'Каждый наставник — отдельная запись. Не более 4 для одной страницы.' ) ->add_fields( array( - Field::make('association', 'mentor', 'Выберите наставника') + Field::make('association', 'mentor', 'Выберите наставника из списка') ->set_width( 32 ) ->set_types(array( array( @@ -602,39 +674,49 @@ function add_carbon() { ) )) ->set_max(1) - ->help_text( 'выбирается только один наставник для вкладки' ), - Field::make( 'text', 'mentor_job', 'Должность:' ), - Field::make( 'complex', 'mentor_directions', 'Направления наставника:' ) + ->set_help_text( 'Выберите одного преподавателя из записей типа «Учитель».' ), + Field::make( 'text', 'mentor_job', 'Должность в лагере' ) + ->set_width( 68 ), + Field::make( 'complex', 'mentor_directions', 'Направления работы' ) ->add_fields( array( - Field::make( 'text', 'direction_name', 'Название направления:' ), - )), - Field::make( 'text', 'mentor_experience', 'Опыт работы в сфере образования:' ), + Field::make( 'text', 'direction_name', 'Название направления' ), + )) + ->set_help_text( 'Например: «Робототехника», «Театр».' ), + Field::make( 'text', 'mentor_experience', 'Опыт работы (в годах)' ) + ->set_help_text( 'Текстом: «более 5 лет».' ), )) )) - ->add_tab('Распорядок дня', array( - Field::make( 'complex', 'routine', 'Блок "Распорядок дня"' ) + ->add_tab('⏰ Распорядок дня', array( + Field::make( 'complex', 'routine', 'Расписание по времени' ) + ->set_help_text( 'Добавьте пункты распорядка по порядку следования.' ) ->add_fields( array( - Field::make( 'text', 'routine_time', 'Время:' ) - ->set_width( 15 ), - Field::make( 'text', 'routine_title', 'Название мероприятия:' ) - ->set_width( 40 ), - Field::make( 'textarea', 'routine_text', 'Описание мероприятия:' ) + Field::make( 'text', 'routine_time', 'Время' ) + ->set_width( 15 ) + ->set_help_text( 'Формат: 08:30' ), + Field::make( 'text', 'routine_title', 'Название активности' ) + ->set_width( 40 ) + ->set_help_text( 'Например: «Научный блок»' ), + Field::make( 'textarea', 'routine_text', 'Описание' ) ->set_width( 45 ), )) )) - ->add_tab('Фотографии', array( - Field::make( 'complex', 'fotos', 'Блок с фотографиями' ) + ->add_tab('📷 Фотографии', array( + Field::make( 'complex', 'fotos', 'Галерея фотографий' ) ->set_layout( 'tabbed-horizontal' ) + ->set_help_text( 'Добавьте реальные фото детей из лагеря. Формат: WebP, 1:1 или 4:3.' ) ->add_fields( array( - Field::make( 'image', 'foto', 'Фотография:' ) + Field::make( 'image', 'foto', 'Фотография' ) )), - Field::make( 'rich_text', 'fotos_content', 'Текстовый контент:' ), - Field::make( 'text', 'fotos_link_vk', 'Ссылка на ВК:' ) + Field::make( 'separator', 'fotos_extra_sep', 'Дополнительно' ), + Field::make( 'rich_text', 'fotos_content', 'Текст под галереей' ), + Field::make( 'text', 'fotos_link_vk', 'Ссылка на альбом ВКонтакте' ) ->set_default_value('#') + ->set_help_text( 'Ссылка на альбом с большим количеством фото в сообществе.' ), )) - ->add_tab('Вопросы-Ответы', array( - Field::make( 'complex', 'questions', 'Блок вопросы и ответы' ) + ->add_tab('❓ Вопросы и ответы (FAQ)', array( + Field::make( 'complex', 'questions', 'Список вопросов и ответов' ) ->set_layout( 'tabbed-horizontal' ) + ->set_help_text( 'Чем больше вопросов, тем меньше возражений у родителей. Минимум 7–8 вопросов.' ) ->add_fields( array( Field::make( 'textarea', 'questions_question', 'Текст вопроса' ) ->set_width( 30 ), @@ -642,24 +724,70 @@ function add_carbon() { ->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_tab('📍 Контакты и карта', array( + Field::make( 'separator', 'contacts_main_sep', 'Контактная информация' ), + Field::make( 'text', 'contact_tel', 'Телефон' ) + ->set_width( 50 ) + ->set_help_text( 'Формат: +7 (999) 123-45-67' ), + Field::make( 'text', 'contact_mail', 'Электронная почта' ) + ->set_width( 50 ), + Field::make( 'text', 'contact_address', 'Адрес проведения' ) + ->set_help_text( 'Полный адрес: город, улица, дом.' ), + Field::make( 'separator', 'contacts_map_sep', 'Карта и соцсети' ), + Field::make( 'text', 'contact_location', 'Координаты для Яндекс.Карт' ) + ->set_width( 50 ) + ->set_help_text( 'Формат: 55.9217, 37.9914' ), + Field::make( 'text', 'contact_location_text', 'Подпись метки на карте' ) + ->set_width( 50 ) + ->set_help_text( 'Что написано в баллуне на карте.' ), + Field::make( 'complex', 'social_media', 'Социальные сети и мессенджеры' ) ->add_fields( array( - Field::make( 'text', 'social_media_name', 'Название:' ) + Field::make( 'text', 'social_media_name', 'Название' ) ->set_width( 100 ), - Field::make( 'image', 'social_media_img', 'Логотип:' ) + Field::make( 'image', 'social_media_img', 'Иконка/логотип' ) ->set_width( 20 ), - Field::make( 'text', 'social_media_link', 'Cсылка:' ) + Field::make( 'text', 'social_media_link', 'Ссылка' ) ->set_width( 80 ), )), )) - ->add_tab('Битрикс', array( - Field::make( 'textarea', 'camp_bitrix_script', 'script (формы) БИТРИКС24:' ), + ->add_tab('🏭 Преимущества', array( + Field::make( 'complex', 'suggestions', 'Блок «Почему выбирают нас»' ) + ->set_layout( 'tabbed-horizontal' ) + ->set_help_text( '3–6 преимуществ с иконкой, заголовком и описанием.' ) + ->add_fields( array( + Field::make( 'image', 'suggestions_img', 'Изображение' ) + ->set_help_text( 'Рекомендуемый размер: 335×195 px.' ) + ->set_width( 100 ), + Field::make( 'text', 'suggestions_title', 'Заголовок' ) + ->set_width( 100 ), + Field::make( 'textarea', 'suggestions_text', 'Описание' ) + ->set_width( 100 ), + )), + )) + ->add_tab('🚩 Дополнительные баннеры', array( + Field::make( 'separator', 'banner1_sep', 'Баннер №1 (между программами и ценами)' ), + Field::make( 'image', 'banner_add_img', 'Фоновое изображение баннера №1' ) + ->set_width( 50 ) + ->set_help_text( 'Рекомендуемый размер: 1200×400 px.' ), + Field::make( 'text', 'banner_add_title', 'Заголовок баннера №1' ) + ->set_width( 50 ), + Field::make( 'textarea', 'banner_add_text', 'Текст баннера №1' ) + ->set_width( 100 ), + Field::make( 'text', 'banner_add_text_min', 'Сноска под кнопкой №1' ) + ->set_help_text( 'Маленький текст под кнопкой баннера.' ), + Field::make( 'separator', 'banner2_sep', 'Баннер №2 (после отзывов)' ), + Field::make( 'image', 'banner_add_img2', 'Фоновое изображение баннера №2' ) + ->set_width( 50 ), + Field::make( 'text', 'banner_add_title2', 'Заголовок баннера №2' ) + ->set_width( 50 ), + Field::make( 'textarea', 'banner_add_text2', 'Текст баннера №2' ) + ->set_width( 100 ), + Field::make( 'text', 'banner_add_text_min2', 'Сноска под кнопкой №2' ) + ->set_help_text( 'Маленький текст под кнопкой баннера.' ), + )) + ->add_tab('🗂️ Битрикс24', array( + Field::make( 'textarea', 'camp_bitrix_script', 'Скрипт формы Битрикс24' ) + ->set_help_text( 'Вставьте полный JS-код интеграции с CRM-формой Битрикс24. Выводится в модальном окне заявки.' ), )); } diff --git a/wp-content/themes/dekart/functions.php.bak.20260508_084227 b/wp-content/themes/dekart/functions.php.bak.20260508_084227 new file mode 100644 index 0000000..7eedcde --- /dev/null +++ b/wp-content/themes/dekart/functions.php.bak.20260508_084227 @@ -0,0 +1,965 @@ + _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(' - -
- - - -
-

Что мы предлагаем

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

-

-
- -
-
-

С любовью и заботой о каждом

-

Мы обеспечиваем безопасную и поддерживающую среду, где дети могут раскрывать свой - потенциал, исследовать мир и развивать дружбу под присмотром заботливых наставников.

-
-
- инфографика возраста -

возраст

-

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 раза в день (в зависимости от погодных условий)
  • -
  • тематические экскурсии каждую неделю
  • -
-
-
-
- -
-

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

-
- " . $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(); - - $post_id = get_the_ID(); - - $review_date = get_the_date( 'd.m.Y'); - $review_level = carbon_get_post_meta( $post_id, 'review_level' ); - - $avatar = carbon_get_post_meta( $post_id, 'review_avatar' ); - - $stars = carbon_get_post_meta( $post_id, 'review_star' ); - $tekst_otzyva = carbon_get_post_meta( $post_id, 'review_text' ); - $prepodavatel = carbon_get_post_meta( $post_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 ); ?> - -
-
-
-
-
-
-
- - - - - - -
-
- - -
-
-
- -
-
- -
-
-
- -
-
- - - -
-

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

-
- - -
- $questions_question - - - - - - - - -
-
-
$questions_answer
-
-
"; - } else { - $HTMcol2 .= "
-
- $questions_question - - - - - - - - -
-
-
$questions_answer
-
-
"; - } - $count++; - } - echo "
$HTMcol1
"; - echo "
$HTMcol2
"; - ?> - -
- -
- -

Контакты

-
-
-
Телефон:
- -
Почта:
- -
Адрес:
-
-
Наши соцсети:
-
- - - - -
-
-
-
- -
-
-
- -
- - - - - - - - - - "; -} -?> + + $priceMax) $priceMax = $price; + if ($price < $priceMin) $priceMin = $price; +} +?> + + + +
+ + + + +
+

Что мы предлагаем

+
+ +
+ <?php echo get_post_meta( $suggestions_img, '_wp_attachment_image_alt', true ); ?> +

+

+
+ +
+
+

С любовью и заботой о каждом

+

Мы обеспечиваем безопасную и поддерживающую среду, где дети могут раскрывать свой + потенциал, исследовать мир и развивать дружбу под присмотром заботливых наставников.

+
+
+ инфографика возраста +

возраст

+

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 раза в день (в зависимости от погодных условий)
  • +
  • тематические экскурсии каждую неделю
  • +
+
+
+
+ +
+

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

+
+ " . $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(); + + $post_id = get_the_ID(); + + $review_date = get_the_date( 'd.m.Y'); + $review_level = carbon_get_post_meta( $post_id, 'review_level' ); + + $avatar = carbon_get_post_meta( $post_id, 'review_avatar' ); + + $stars = carbon_get_post_meta( $post_id, 'review_star' ); + $tekst_otzyva = carbon_get_post_meta( $post_id, 'review_text' ); + $prepodavatel = carbon_get_post_meta( $post_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 ); ?> + +
+
+
+
+
+
+
+ + + + + + +
+
+ + +
+
+
+ +
+
+ +
+
+
+ +
+
+ + + +
+

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

+
+ + +
+ $questions_question + + + + + + + + +
+
+
$questions_answer
+
+
"; + } else { + $HTMcol2 .= "
+
+ $questions_question + + + + + + + + +
+
+
$questions_answer
+
+
"; + } + $count++; + } + echo "
$HTMcol1
"; + echo "
$HTMcol2
"; + ?> + +
+ +
+ +

Контакты

+
+
+
Телефон:
+ +
Почта:
+ +
Адрес:
+
+
Наши соцсети:
+
+ + + + +
+
+
+
+ +
+
+
+ +
+ + + + + + + + + + "; +} +?> - - - + + +