<?php define('CHILD_THEME_STRONA_DLA_TERAPEUTY_CHILD_VERSION','1.1.5');// 1. STYLE I FONT ASTRA add_action('wp_enqueue_scripts',function(){wp_enqueue_style('strona-dla-terapeuty-child-theme-css',get_stylesheet_directory_uri() . '/style.css',array('astra-theme-css'),CHILD_THEME_STRONA_DLA_TERAPEUTY_CHILD_VERSION,'all')},15);// 2. BLOKADA ZEWNĘTRZNYCH FONTÓW I EMOJI+FONT-DISPLAY SWAP add_filter('elementor/frontend/print_google_fonts','__return_false');add_action('wp_enqueue_scripts',function(){$styles_to_clean=['astra-google-fonts'];foreach ($styles_to_clean as $handle){wp_dequeue_style($handle);wp_deregister_style($handle)}},9999);remove_action('wp_head','print_emoji_detection_script',7);remove_action('wp_print_styles','print_emoji_styles');// 3. OPTYMALIZACJA LCP,JQUERY I FONTÓW add_filter('wp_resource_hints',function($hints,$relation_type){return $hints},10,2);// 4. INTELIGENTNY LOADER (TrustIndex) – tylko na wybranych stronach function optima_smart_loader_scripts(){if (is_admin() || isset($_GET['elementor-preview'])) return;// Slugi stron,na których TrustIndex ma się ładować $trustindex_allow_pages=array('seksuolog','terapia-dla-par',);// Dodatkowo:strona główna $should_load=is_front_page() || is_page($trustindex_allow_pages);if (! $should_load) return;?><script id="optima-smart-loader">(function(){var sinjected=false;function injectAll(){if (sinjected) return;sinjected=true;var s=['https://cdn.trustindex.io/loader.js?7463f82215165415f16'];s.forEach(function(src){var t=document.createElement('script');t.src=src;t.async=true;document.head.appendChild(t)})}['mousedown','scroll','touchstart'].forEach(function(evt){window.addEventListener(evt,injectAll,{passive:true})});setTimeout(injectAll,4000)})();</script><?php}add_action('wp_head','optima_smart_loader_scripts',1);// 5. ASYNCHRONICZNY CSS add_filter('style_loader_tag',function($tag,$handle){if (strpos($tag,'wp-content/cache/litespeed/css') !==false || strpos($handle,'elementor') !==false){return str_replace(["rel='stylesheet'",'rel="stylesheet"'],"rel='preload' as='style' onload=\"this.onload=null;this.rel='stylesheet'\"",$tag)}return $tag},10,2);// 6. ACCESSIBILITY & SEO (Puste linki) add_action('wp_footer',function(){?><script>(function(){document.querySelectorAll('a').forEach(function(a){if (a.innerText.trim()==="" && !a.getAttribute('aria-label')){if (a.href.includes('facebook')) a.setAttribute('aria-label','Facebook');else if (a.href.includes('instagram')) a.setAttribute('aria-label','Instagram');else a.setAttribute('aria-label','Zobacz więcej')}})})();</script><?php},999);// 7. DEFER SKRYPTÓW add_filter('script_loader_tag',function($tag,$handle){$defer_list=['elementor-frontend','elementor-pro-frontend','elementor-frontend-modules','elementor-webpack-runtime','uael-frontend','astra-addon-js','wp-consent-api','swiper','jquery-numerator'];if (in_array($handle,$defer_list,true) && strpos($tag,' defer')===false){return str_replace(' src',' defer src',$tag)}return $tag},10,2);// 8. BREADCRUMB FIX add_filter('wpseo_schema_breadcrumb',function($data){if (isset($data['itemListElement'])){$last=count($data['itemListElement']) - 1;if (! isset($data['itemListElement'][$last]['item'])){global $wp;$data['itemListElement'][$last]['item']=user_trailingslashit(home_url(/wp-content/themes/stronadlaterapeuty-child/$wp->request))}}return $data},20);// 9. CZYSTOŚĆ W PANELU add_filter('admin_footer_text',function($text){return '<span id="footer-thankyou"><a target="_blank" href="https://stronadlaterapeuty.pl">stronadlaterapeuty.pl</a></span>'});function intima_blog_slider_shortcode(){$args=array('category__in'=>array(28,29),'posts_per_page'=>12,'post_status'=>'publish');$query=new WP_Query($args);ob_start();?><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"><style>.pi-wrap-outer{width:100%!important;max-width:1200px!important;margin:40px auto!important;padding:0 40px!important;box-sizing:border-box!important}@media (min-width:1024px){.swiper-container-pi .swiper-slide{width:calc(25% - 22.5px)!important}}@media (min-width:768px) and (max-width:1023px){.swiper-container-pi .swiper-slide{width:calc(50% - 15px)!important}}.swiper-container-pi{overflow:hidden!important;position:relative!important}.pi-card{background:#fff!important;border-radius:8px!important;box-shadow:0 4px 12px rgb(0 0 0 / .1)!important;display:flex!important;flex-direction:column!important;border:1px solid #eee!important;height:auto!important}.pi-card img{width:100%!important;height:200px!important;object-fit:cover!important;border-radius:8px 8px 0 0!important}.pi-card-body{padding:20px!important;text-align:center!important}.pi-card-body h3{font-size:16px!important;margin:0 0 10px!important;line-height:1.4!important;min-height:45px!important}.pi-btn-more{background:#e2c57c!important;color:#000!important;padding:10px 20px!important;text-decoration:none!important;border-radius:4px!important;font-weight:bold!important;display:inline-block!important}.pi-next,.pi-prev{color:#e2c57c!important}.swiper-pagination-bullet-active{background:#e2c57c!important}</style><div class="pi-wrap-outer"><div class="swiper swiper-container-pi" id="pi-v3-swiper"><div class="swiper-wrapper"><?php if ($query->have_posts()) :while ($query->have_posts()) :$query->the_post();?><div class="swiper-slide pi-card"><?php $img=get_the_post_thumbnail_url(/wp-content/themes/stronadlaterapeuty-child/get_the_ID(),'medium') ?:'https://via.placeholder.com/600x400';?><a href="<?php the_permalink(); ?>"><img src="<?php echo esc_url(/wp-content/themes/stronadlaterapeuty-child/$img); ?>" alt=""></a><div class="pi-card-body"><h3><a href="<?php the_permalink(); ?>" style="text-decoration:none; color:#222;"><?php the_title();?></a></h3><p style="font-size:13px; color:#666;"><?php echo esc_html(wp_trim_words(get_the_excerpt(),10));?></p><a href="<?php the_permalink(); ?>" class="pi-btn-more">Czytaj więcej</a></div></div><?php endwhile;wp_reset_postdata();endif;?></div><div class="swiper-button-next pi-next"></div><div class="swiper-button-prev pi-prev"></div><div class="swiper-pagination" style="bottom: -5px !important;"></div></div></div><script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script><script>(function(){function init(){if (typeof Swiper==='undefined'){setTimeout(init,200);return}new Swiper('#pi-v3-swiper',{slidesPerView:1,spaceBetween:20,loop:true,observer:true,observeParents:true,navigation:{nextEl:'.pi-next',prevEl:'.pi-prev'},pagination:{el:'.swiper-pagination',clickable:true},breakpoints:{768:{slidesPerView:2,spaceBetween:30},1024:{slidesPerView:4,spaceBetween:30}}})}window.addEventListener('load',init)})();</script><?php return ob_get_clean()}add_shortcode('strefa_wiedzy_slider','intima_blog_slider_shortcode');add_action('wp_enqueue_scripts',function (){if (is_admin() || isset($_GET['elementor-preview'])) return;// 1) Dozwolone slugi stron $allowed_pages=['seksuolog','umow-wizyte','psychoterapia','psycholog','terapia-dla-par','terapia-online',];$is_allowed=is_page($allowed_pages);// 2) Strony specjalistów – wykrywanie po menu:"Nasi specjaliści"+jego podmenu if (!$is_allowed && is_page()){$current_id=(int) get_queried_object_id();// Cache listy ID stron specjalistów,żeby nie mielić bazy na każdym wejściu $cache_key='quickcal_specialists_page_ids_v1';$specialist_ids=get_transient($cache_key);if ($specialist_ids===false){$specialist_ids=[];// Spróbuj pobrać menu przypisane do lokalizacji "primary" (Astra zwykle tak ma) $locations=get_nav_menu_locations();$menu_id=$locations['primary'] ?? null;// Jeśli nie ma "primary",weź pierwsze dostępne menu (awaryjnie) if (!$menu_id){$menus=wp_get_nav_menus();if (!empty($menus)){$menu_id=$menus[0]->term_id}}if ($menu_id){$items=wp_get_nav_menu_items($menu_id);if (is_array($items)){// Znajdź element menu,który prowadzi do /nasi-specjalisci/ $root_item_id=0;foreach ($items as $it){$url=isset($it->url) ? (string) $it->url :'';if (strpos($url,'/nasi-specjalisci/') !==false){$root_item_id=(int) $it->ID;break}}if ($root_item_id){// Zbierz wszystkie potomne elementy menu (rekurencja po menu_item_parent) $by_parent=[];foreach ($items as $it){$parent=(int) $it->menu_item_parent;$by_parent[$parent][]=$it}$stack=$by_parent[$root_item_id] ?? [];while (!empty($stack)){$node=array_pop($stack);$nid=(int) $node->ID;if (!empty($by_parent[$nid])){foreach ($by_parent[$nid] as $child){$stack[]=$child}}// Z dzieci wyciągnij ID stron (object_id) – tylko jeśli to "page" if (($node->object ?? '')==='page'){$specialist_ids[]=(int) $node->object_id}}}}}$specialist_ids=array_values(array_unique(array_filter($specialist_ids)));set_transient($cache_key,$specialist_ids,12 * HOUR_IN_SECONDS)}if (in_array($current_id,(array) $specialist_ids,true)){$is_allowed=true}}if (!$is_allowed) return},20);@media (min-width:922px){.wp-block-columns{flex-direction:row!important;display:flex!important}}