?AlkantarClanX12

Your IP : 216.73.217.134


Current Path : /home/r/a/n/rankinh/saintgilleslesbains-bis/wp-content/themes/divi-child/
Upload File :
Current File : /home/r/a/n/rankinh/saintgilleslesbains-bis/wp-content/themes/divi-child/functions.php

<?php
/**
 * Thème enfant Divi - Saint-Gilles-les-Bains
 */

if ( ! defined( 'ABSPATH' ) ) exit;

// ─────────────────────────────────────────
// 1. Chargement des styles parent + enfant
// ─────────────────────────────────────────
function sglb_child_enqueue_styles() {
    // Style Divi parent
    wp_enqueue_style(
        'divi-parent-style',
        get_template_directory_uri() . '/style.css',
        [],
        wp_get_theme()->parent()->get('Version')
    );

    // Style enfant
    wp_enqueue_style(
        'divi-child-style',
        get_stylesheet_directory_uri() . '/style.css',
        ['divi-parent-style'],
        wp_get_theme()->get('Version')
    );
}
add_action('wp_enqueue_scripts', 'sglb_child_enqueue_styles');


// ─────────────────────────────────────────
// 2. Assets Single Listing
// ─────────────────────────────────────────
function sglb_single_listing_assets() {
    if ( is_singular('sglb_listing') ) {
        wp_enqueue_style(
            'sglb-single-listing',
            get_stylesheet_directory_uri() . '/assets/css/single-listing.css',
            [],
            '1.0.0'
        );

        wp_enqueue_script(
            'sglb-single-listing',
            get_stylesheet_directory_uri() . '/assets/js/single-listing.js',
            [],
            '1.0.0',
            true
        );
    }
}
add_action('wp_enqueue_scripts', 'sglb_single_listing_assets');


// ─────────────────────────────────────────
// 3. Supports thème
// ─────────────────────────────────────────
function sglb_child_setup() {
    add_theme_support('title-tag');
    add_theme_support('post-thumbnails');
    add_theme_support('html5', [
        'search-form',
        'comment-form',
        'comment-list',
        'gallery',
        'caption',
    ]);
}
add_action('after_setup_theme', 'sglb_child_setup');


// ─────────────────────────────────────────
// 4. Logique de filtrage et recherche (Annuaire)
// ─────────────────────────────────────────
add_action( 'pre_get_posts', function( $query ) {
    if ( ! is_admin() && $query->is_main_query() && is_post_type_archive( 'sglb_listing' ) ) {
        
        // Force 20 fiches par page
        $query->set( 'posts_per_page', 20 );

        // Initialisation de la tax_query
        $tax_query = array();

        // Filtre par Catégorie
        if ( ! empty( $_GET['l_cat'] ) ) {
            $tax_query[] = [
                'taxonomy' => 'sglb_listing_cat',
                'field'    => 'slug',
                'terms'    => sanitize_text_field( $_GET['l_cat'] ),
            ];
        }

        // Filtre par Quartier
        if ( ! empty( $_GET['l_reg'] ) ) {
            $tax_query[] = [
                'taxonomy' => 'sglb_listing_region',
                'field'    => 'slug',
                'terms'    => sanitize_text_field( $_GET['l_reg'] ),
            ];
        }

        if ( ! empty( $tax_query ) ) {
            $tax_query['relation'] = 'AND';
            $query->set( 'tax_query', $tax_query );
        }

        // Recherche textuelle
        if ( ! empty( $_GET['l_search'] ) ) {
            $query->set( 's', sanitize_text_field( $_GET['l_search'] ) );
        }
    }
});


// ─────────────────────────────────────────
// 5. Force "Aucune barre latérale" pour Divi 4
// ─────────────────────────────────────────
/**
 * Ce filtre est magique sur Divi 4 : il impose le layout pleine largeur
 * sans avoir besoin de modifier chaque fiche à la main.
 */
add_filter( 'et_pb_post_main_layout', function( $layout ) {
    $post_types = array( 'sglb_listing', 'sglb_event' );
    if ( is_singular( $post_types ) ) {
        return 'et_full_width';
    }
    return $layout;
});

/* Ajoute le js pour le fonctionnement du slider */
add_action('wp_enqueue_scripts', function() {
    wp_enqueue_style('swiper-css', 'https://unpkg.com/swiper/swiper-bundle.min.css');
    wp_enqueue_script('swiper-js', 'https://unpkg.com/swiper/swiper-bundle.min.js', array(), null, true);
});

// ─────────────────────────────────────────
// 6. Chargement des Shortcodes (Modules Home)
// ─────────────────────────────────────────
$shortcodes_path = get_stylesheet_directory() . '/inc/shortcodes/';

// On vérifie si les fichiers existent avant de les inclure pour éviter les erreurs fatales
if ( file_exists( $shortcodes_path . 'agenda.php' ) ) {
    require_once $shortcodes_path . 'agenda.php';
}
if ( file_exists( $shortcodes_path . 'annuaire.php' ) ) {
    require_once $shortcodes_path . 'annuaire.php';
}
if ( file_exists( $shortcodes_path . 'news.php' ) ) {
    require_once $shortcodes_path . 'news.php';
}