Extension WordPress – Carte des Inscriptions Eurêkamaths
📋 Description
Extension WordPress qui affiche sur une carte interactive (Leaflet) toutes les classes inscrites au concours Eurêkamaths. Les marqueurs sont colorés selon le niveau (CM1 = jaune, CM2 = vert, 6e = violet) et regroupés automatiquement avec Leaflet.markercluster.
🗺️ Fonctionnalités
Carte interactive
- Fond de carte OpenStreetMap : gratuit et collaboratif
- Clustering automatique : les marqueurs proches sont regroupés
- Zoom et navigation : contrôles intuitifs
- Responsive : s’adapte à tous les écrans
Marqueurs colorés par niveau
- 🟡 CM1 : Icône jaune (#FFD700)
- 🟢 CM2 : Icône verte (#28a745)
- 🟣 6e : Icône violette (#9B59B6)
Popups informatifs
Au clic sur un marqueur, affichage de :
- Nom de la classe et niveau
- Nom de l’enseignant
- Établissement
- Commune et code postal
- Nombre d’élèves
Statistiques
Affichage en temps réel :
- Nombre total de classes inscrites
- Répartition par niveau (CM1, CM2, 6e)
Filtrage par année scolaire
- Affiche uniquement les inscriptions de l’année scolaire sélectionnée
- Par défaut : année scolaire en cours
🚀 Installation
Prérequis
- WordPress avec les extensions :
- Inscription Concours Eurêkamaths (pour la table
inscrits)
- Inscription Concours Eurêkamaths (pour la table
- Tables de base de données :
wp_inscritsavec colonnes :id_inscrit,classe,niveau,prenom,nom,nb,uai,annee_scolairewp_etabs_geolocalisationavec colonnes :uai,nom_etab,commune,cp,latitude,longitude
Structure des fichiers
carte-inscriptions/
├── carte-inscriptions.php (fichier principal)
├── assets/
│ ├── carte-script.js
│ └── carte-style.css
└── README.md
Étapes d’installation
- Créer le dossier du plugin
mkdir wp-content/plugins/carte-inscriptions mkdir wp-content/plugins/carte-inscriptions/assets - Copier les fichiers
carte-inscriptions.php: fichier principal PHPassets/carte-script.js: JavaScript Leafletassets/carte-style.css: styles CSS
- Vérifier la table
etabs_geolocalisationLa table doit contenir les colonnes
latitudeetlongitude:ALTER TABLE wp_etabs_geolocalisation ADD COLUMN latitude DECIMAL(10, 8) DEFAULT NULL, ADD COLUMN longitude DECIMAL(11, 8) DEFAULT NULL; - Activer le plugin
- Allez dans WordPress Admin → Extensions
- Activez « Carte des Inscriptions Eurêkamaths »
- Utiliser le shortcode
Ajoutez le shortcode dans une page ou un article :
[carte_inscriptions]
🎨 Personnalisation du shortcode
Le shortcode accepte plusieurs paramètres optionnels :
[carte_inscriptions height="600px" zoom="6" center_lat="46.603354" center_lng="1.888334" annee="2024-2025"]
Paramètres disponibles
| Paramètre | Description | Valeur par défaut |
|---|---|---|
height |
Hauteur de la carte | 600px |
zoom |
Niveau de zoom initial | 6 (France entière) |
center_lat |
Latitude du centre initial | 46.603354 (centre France) |
center_lng |
Longitude du centre initial | 1.888334 |
annee |
Année scolaire à afficher | Année en cours |
Exemples d’utilisation
Carte par défaut :
[carte_inscriptions]
Carte centrée sur l’Île-de-France :
[carte_inscriptions zoom="8" center_lat="48.8566" center_lng="2.3522"]
Carte avec année spécifique :
[carte_inscriptions annee="2023-2024"]
Carte plus grande :
[carte_inscriptions height="800px"]
📊 Base de données
Table wp_etabs_geolocalisation
Colonnes requises pour la carte :
| Colonne | Type | Description |
|---|---|---|
| uai | varchar(8) | Code UAI de l’établissement |
| nom_etab | varchar(255) | Nom de l’établissement |
| commune | varchar(100) | Commune |
| cp | varchar(10) | Code postal |
| latitude | decimal(10,8) | Latitude GPS |
| longitude | decimal(11,8) | Longitude GPS |
Important : Les établissements sans coordonnées (latitude/longitude NULL ou 0) ne seront pas affichés sur la carte.
Exemple de données
INSERT INTO wp_etabs_geolocalisation (uai, nom_etab, commune, cp, latitude, longitude)
VALUES
('0380001A', 'École primaire Jean Moulin', 'Grenoble', '38000', 45.188529, 5.724524),
('0750001B', 'Collège Victor Hugo', 'Paris', '75015', 48.841684, 2.289960);
🔍 Comment obtenir les coordonnées GPS ?
Option 1 : API Adresse (gouv.fr) – RECOMMANDÉ
Script PHP pour géocoder automatiquement :
<?php
global $wpdb;
$etabs = $wpdb->get_results("SELECT id, adresse, cp, commune FROM wp_etabs_geolocalisation WHERE latitude IS NULL");
foreach ($etabs as $etab) {
$query = urlencode($etab->adresse . ' ' . $etab->cp . ' ' . $etab->commune);
$url = "https://api-adresse.data.gouv.fr/search/?q=" . $query . "&limit=1";
$response = file_get_contents($url);
$data = json_decode($response, true);
if (!empty($data['features'])) {
$coords = $data['features'][0]['geometry']['coordinates'];
$wpdb->update(
'wp_etabs_geolocalisation',
array(
'longitude' => $coords[0],
'latitude' => $coords[1]
),
array('id' => $etab->id)
);
}
usleep(200000); // Pause de 200ms entre chaque requête
}
?>
Option 2 : Import CSV
Si vous avez déjà les coordonnées dans un fichier CSV :
LOAD DATA LOCAL INFILE 'coordonnees.csv'
INTO TABLE wp_etabs_geolocalisation
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(uai, latitude, longitude);
Option 3 : Services en ligne
- Google Maps : rechercher l’adresse, clic droit → « Plus d’infos sur cet endroit »
- OpenStreetMap : rechercher l’adresse, les coordonnées s’affichent dans l’URL
- GPS Visualizer : outil de conversion d’adresses en masse
🎯 Bibliothèques utilisées
- Leaflet 1.9.4 : bibliothèque de cartographie JavaScript
- Licence : BSD-2-Clause
- Site : https://leafletjs.com/
- Leaflet.markercluster 1.5.3 : plugin de clustering
- Licence : MIT
- Site : https://github.com/Leaflet/Leaflet.markercluster
- OpenStreetMap : fond de carte gratuit
- Licence : ODbL
- Site : https://www.openstreetmap.org/
🔧 Dépannage
La carte ne s’affiche pas
- Vérifiez que les scripts Leaflet sont bien chargés (console navigateur)
- Vérifiez que le shortcode est bien dans une page/article
- Désactivez les autres plugins pour détecter un conflit
Aucun marqueur n’apparaît
- Vérifiez que la table
wp_inscritscontient des données - Vérifiez que la colonne
annee_scolairecorrespond à l’année affichée - Vérifiez que la table
wp_etabs_geolocalisationa bien les colonneslatitudeetlongitude - Exécutez cette requête pour vérifier :
SELECT COUNT(*) FROM wp_inscrits i INNER JOIN wp_etabs_geolocalisation e ON i.uai = e.uai WHERE e.latitude IS NOT NULL AND e.longitude IS NOT NULL;
Les marqueurs sont mal positionnés
- Vérifiez l’ordre des coordonnées (latitude puis longitude)
- Vérifiez que les coordonnées sont au bon format (décimal, pas sexagésimal)
- Exemple correct :
latitude = 48.8566,longitude = 2.3522
Erreur AJAX
- Vérifiez les logs d’erreur PHP
- Vérifiez que l’utilisateur a les droits (le shortcode est accessible sans connexion)
- Vérifiez dans la console du navigateur
📞 Support
Pour toute question ou problème :
- Email : contact@eurekamaths.fr
- Site : https://eurekamaths.fr
📄 Licence
© Eurêkamaths – Tous droits réservés
🔄 Changelog
Version 1.0.0
- Première version
- Carte interactive avec Leaflet
- Clustering des marqueurs
- Marqueurs colorés par niveau (CM1, CM2, 6e)
- Popups informatifs
- Statistiques en temps réel
- Filtrage par année scolaire
- Responsive design