?AlkantarClanX12
| Current Path : /home/rankinh/saintgilleslesbains-bis/wp-content/themes/divi-child/ |
| Current File : /home/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';
}