<?php //============================================================// 1. STYLES DU THÈME ENFANT //============================================================add_action('wp_enqueue_scripts','kd_enqueue_parent_theme_style',5);if (! function_exists('kd_enqueue_parent_theme_style')){function kd_enqueue_parent_theme_style(){wp_enqueue_style('bootstrap');wp_enqueue_style('keydesign-style',get_template_directory_uri() . '/style.css',array('bootstrap'));wp_enqueue_style('child-style',get_stylesheet_directory_uri() . '/style.css',array('keydesign-style'))}}//============================================================// 2. CONFIGURATION DU THÈME ENFANT //============================================================add_action('after_setup_theme','kd_child_theme_setup');if (! function_exists('kd_child_theme_setup')){function kd_child_theme_setup(){load_child_theme_textdomain('ekko',get_stylesheet_directory() . '/languages')}}//============================================================// 3. OPTIMISATIONS PERFORMANCE — SCRIPTS DEFER //============================================================function defer_parsing_of_js($tag,$handle){$defer_scripts=['wpo-minify-footer-655e1835','wpo-minify-footer-93751a08','wpo-minify-footer-725207d1','wpo-minify-footer-731c0d30','wpo-minify-footer-532f0699','wpo-minify-header-c5406749',];foreach ($defer_scripts as $defer_script){if (strpos($handle,$defer_script) !==false){return str_replace(' src',' defer src',$tag)}}return $tag}add_filter('script_loader_tag','defer_parsing_of_js',10,2);//============================================================// 4. PRÉCHARGEMENT DES POLICES CRITIQUES //============================================================add_action('wp_head',function (){?><!-- Preload Ekko Font --><link rel="preload" href="<?php echo get_template_directory_uri(); ?>/assets/fonts/ekko-font.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="<?php echo get_template_directory_uri(); ?>/assets/fonts/ekko-font.woff" as="font" type="font/woff" crossorigin><!-- Preload Font Awesome --><link rel="preload" href="<?php echo get_template_directory_uri(); ?>/assets/webfonts/fa-solid-900.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="<?php echo get_template_directory_uri(); ?>/assets/webfonts/fa-regular-400.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="<?php echo get_template_directory_uri(); ?>/assets/webfonts/fa-brands-400.woff2" as="font" type="font/woff2" crossorigin><?php},1);//============================================================// 5. SCHEMA MARKUP ENRICHI — WEBI (Yoast SEO filter) //============================================================add_filter('wpseo_schema_graph','webi_enrich_schema_graph',20,2);function webi_enrich_schema_graph($graph,$context){foreach ($graph as &$piece){// 5a. ORGANISATION if (isset($piece['@type']) && is_array($piece['@type']) && in_array('Organization',$piece['@type'],true)){if (! in_array('LocalBusiness',$piece['@type'],true)){$piece['@type'][]='LocalBusiness'}if (! in_array('ProfessionalService',$piece['@type'],true)){$piece['@type'][]='ProfessionalService'}$piece['priceRange']='$$';$piece['currenciesAccepted']='TND';$piece['paymentAccepted']='Virement bancaire, Cheque, Especes';$piece['slogan']='Agence web tunisienne 100% orientee resultats depuis 2011';$piece['knowsLanguage']=['fr','ar','en'];$piece['legalName']='WEBI - Feriel Mathlouthi';$piece['numberOfEmployees']=['@type'=>'QuantitativeValue','minValue'=>5,'maxValue'=>10,];$piece['areaServed']=[['@type'=>'Country','name'=>'Tunisie'],['@type'=>'City','name'=>'Tunis'],['@type'=>'City','name'=>'La Marsa'],['@type'=>'City','name'=>'Carthage'],['@type'=>'City','name'=>'Sfax'],['@type'=>'City','name'=>'Sousse'],['@type'=>'City','name'=>'Monastir'],];// ⚠️ Mettre à jour reviewCount manuellement à chaque nouvel avis Google $piece['aggregateRating']=['@type'=>'AggregateRating','ratingValue'=>'4.9','reviewCount'=>'51','bestRating'=>'5','worstRating'=>'1',];$piece['hasOfferCatalog']=['@type'=>'OfferCatalog','name'=>'Services digitaux WEBI','itemListElement'=>[['@type'=>'Offer','itemOffered'=>['@type'=>'Service','name'=>'Creation de site web WordPress','url'=>'https://webi.tn/creation-site-web-tunisie/']],['@type'=>'Offer','itemOffered'=>['@type'=>'Service','name'=>'Referencement naturel SEO Tunisie','url'=>'https://webi.tn/referencement-web/']],['@type'=>'Offer','itemOffered'=>['@type'=>'Service','name'=>'Community Management reseaux sociaux','url'=>'https://webi.tn/agence-de-communication-digitale/']],['@type'=>'Offer','itemOffered'=>['@type'=>'Service','name'=>'Creation site e-commerce','url'=>'https://webi.tn/creation-site-ecommerce/']],['@type'=>'Offer','itemOffered'=>['@type'=>'Service','name'=>'Developpement application mobile','url'=>'https://webi.tn/creation-dapplications-mobiles-ios-android/']],['@type'=>'Offer','itemOffered'=>['@type'=>'Service','name'=>'Design graphique et creation de logo','url'=>'https://webi.tn/agence-design-graphique/']],['@type'=>'Offer','itemOffered'=>['@type'=>'Service','name'=>'Redaction web et strategie contenu','url'=>'https://webi.tn/redaction-web-et-strategie-de-contenu/']],],];$piece['privacyNotice']='https://webi.tn/politique-de-confidentialite/'}// 5b. WEBPAGE accueil if (isset($piece['@type']) && $piece['@type']==='WebPage' && isset($piece['url']) && $piece['url']==='https://webi.tn/'){$piece['publishingPrinciples']='https://webi.tn/conditions-generales-de-vente/';$piece['privacyPolicy']='https://webi.tn/politique-de-confidentialite/';$piece['discussionUrl']='https://webi.tn/contact/'}// 5c. WEBSITE if (isset($piece['@type']) && $piece['@type']==='WebSite'){if (empty($piece['inLanguage'])){$piece['inLanguage']='fr-FR'}}}return $graph}//============================================================// 6. CORRECTION TITRES WIDGETS FOOTER H5 ->P // ⚠️ NOTE IMPORTANTE :Le filtre the_content pour corriger // les H5/H6 dans les pages est DÉSACTIVÉ — il est // incompatible avec WPBakery (provoque page blanche). //============================================================add_filter('dynamic_sidebar_params','webi_fix_widget_before_after',99);function webi_fix_widget_before_after($params){if (isset($params[0]['before_title'])){$params[0]['before_title']=str_replace('<h5','<p',$params[0]['before_title']);$params[0]['after_title']=str_replace('</h5>','</p>',$params[0]['after_title'])}return $params}