Extension WordPress – Carte des Inscriptions Eurêkamaths
- README
- Guide d'installation complet
📋 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 colonneslatitudeetlongitude: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]
- Ajoutez le shortcode dans une page ou un article :
🎨 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 (height="600px"mais pour l’exemple height="200px"):
[carte_inscriptions height="200px"]
Carte centrée sur l’Île-de-France :
[carte_inscriptions zoom="8" center_lat="48.8566" center_lng="2.3522" height="200px"]
Carte avec année spécifique :
[carte_inscriptions annee="2023-2024"]
Carte plus grande :
[carte_inscriptions height="400px"]
📊 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
🗺️ Guide d’installation complet – Carte des Inscriptions
📦 Vue d’ensemble
Ce guide vous accompagne pas à pas pour installer et configurer la carte interactive des inscriptions au concours Eurêkamaths.
🎯 Étape 1 : Prérequis
Avant de commencer, assurez-vous d’avoir :
- ✅ WordPress installé et fonctionnel
- ✅ Extension « Inscription Concours Eurêkamaths » activée
- ✅ Tables de base de données :
wp_inscrits(créée par l’extension Inscription)wp_etabs_geolocalisation(avec les données des établissements)
🔧 Étape 2 : Préparer la table des établissements
Ajouter les colonnes latitude et longitude
Si votre table wp_etabs_geolocalisation n’a pas encore les colonnes de géolocalisation :
ALTER TABLE wp_etabs_geolocalisation
ADD COLUMN latitude DECIMAL(10, 8) DEFAULT NULL,
ADD COLUMN longitude DECIMAL(11, 8) DEFAULT NULL;
-- Créer des index pour améliorer les performances
CREATE INDEX idx_coords ON wp_etabs_geolocalisation(latitude, longitude);
Vérifier la structure de la table
Votre table doit avoir au minimum ces colonnes :
DESCRIBE wp_etabs_geolocalisation;
Résultat attendu :
uai varchar(8)
nom_etab varchar(255)
adresse varchar(255)
commune varchar(100)
cp varchar(10)
pays varchar(100)
latitude decimal(10,8) <- NOUVEAU
longitude decimal(11,8) <- NOUVEAU
📂 Étape 3 : Installer l’extension Carte
Structure des fichiers à créer
wp-content/plugins/carte-inscriptions/
├── carte-inscriptions.php <- Fichier principal
├── geocoding-utility.php <- Utilitaire de géocodage (optionnel)
├── assets/
│ ├── carte-script.js <- JavaScript
│ └── carte-style.css <- CSS
└── README.md <- Documentation
Commandes pour créer la structure
cd wp-content/plugins/
mkdir carte-inscriptions
cd carte-inscriptions
mkdir assets
Copier les fichiers
- carte-inscriptions.php → fichier principal fourni
- assets/carte-script.js → JavaScript Leaflet
- assets/carte-style.css → styles CSS
- geocoding-utility.php → utilitaire (optionnel mais recommandé)
🌍 Étape 4 : Géocoder les établissements
Les coordonnées GPS sont indispensables pour afficher les établissements sur la carte.
Option A : Utiliser l’utilitaire de géocodage (RECOMMANDÉ)
- Ajouter le code de géocodage dans
carte-inscriptions.php:// À la fin du fichier carte-inscriptions.php, avant la ligne finale require_once plugin_dir_path(__FILE__) . 'geocoding-utility.php'; - Créer une page WordPress (en tant qu’administrateur) :
- Titre : « Géocodage des établissements »
- Contenu :
[geocode_etabs] - Publier la page
- Accéder à la page et cliquer sur « Démarrer le géocodage »
- Attendre la fin : le processus géocode automatiquement tous les établissements
Option B : Import manuel CSV
Si vous avez déjà un fichier CSV avec les coordonnées :
uai,latitude,longitude
0380001A,45.188529,5.724524
0750001B,48.841684,2.289960
Import SQL :
LOAD DATA LOCAL INFILE 'coordonnees.csv'
INTO TABLE wp_etabs_geolocalisation
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(uai, latitude, longitude);
Option C : API externe (pour développeurs)
Utiliser un service de géocodage :
- API Adresse (gouv.fr) : gratuit, France uniquement
- Nominatim (OpenStreetMap) : gratuit, monde entier
- Google Geocoding API : payant mais précis
✅ Étape 5 : Activer l’extension
- Aller dans WordPress Admin → Extensions
- Trouver « Carte des Inscriptions Eurêkamaths »
- Cliquer sur Activer
🎨 Étape 6 : Afficher la carte
Créer une page publique
- Créer une nouvelle page :
- Titre : « Carte des inscriptions »
- Slug :
carte-inscriptions
- Ajouter le shortcode :
[carte_inscriptions] - Personnaliser (optionnel) :
[carte_inscriptions height="700px" zoom="7" center_lat="46.603354" center_lng="1.888334"] - Publier la page
Intégrer dans une page existante
Vous pouvez combiner avec d’autres shortcodes :
<h2>Les classes inscrites</h2>
<p>Découvrez toutes les classes participantes sur la carte interactive :</p>
[carte_inscriptions]
<h2>Inscrivez votre classe</h2>
🔍 Étape 7 : Vérification
Vérifier que tout fonctionne
- Accéder à la page de la carte
- Vérifier l’affichage :
- ✅ La carte s’affiche correctement
- ✅ Les marqueurs apparaissent
- ✅ Les marqueurs ont les bonnes couleurs (jaune/vert/violet)
- ✅ Les popups s’ouvrent au clic
- ✅ Les statistiques sont affichées
En cas de problème
La carte ne s’affiche pas :
-- Vérifier qu'il y a des inscriptions
SELECT COUNT(*) FROM wp_inscrits;
-- Vérifier qu'il y a des coordonnées
SELECT COUNT(*) FROM wp_etabs_geolocalisation
WHERE latitude IS NOT NULL AND longitude IS NOT NULL;
-- Vérifier la jointure
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;
Aucun marqueur :
- Vérifiez la console JavaScript (F12) pour les erreurs
- Vérifiez que l’année scolaire correspond
- Vérifiez les paramètres du shortcode
Les marqueurs sont mal positionnés :
-- Vérifier quelques coordonnées
SELECT uai, nom_etab, latitude, longitude
FROM wp_etabs_geolocalisation
WHERE latitude IS NOT NULL
LIMIT 5;
📊 Étape 8 : Statistiques et suivi
Requêtes SQL utiles
Nombre d’établissements par département :
SELECT
SUBSTRING(uai, 1, 3) as departement,
COUNT(*) as nombre
FROM wp_inscrits i
INNER JOIN wp_etabs_geolocalisation e ON i.uai = e.uai
WHERE i.annee_scolaire = '2024-2025'
GROUP BY departement
ORDER BY nombre DESC;
Répartition par niveau :
SELECT
niveau,
COUNT(*) as nombre,
SUM(nb) as total_eleves
FROM wp_inscrits
WHERE annee_scolaire = '2024-2025'
GROUP BY niveau;
Établissements sans coordonnées :
SELECT DISTINCT e.uai, e.nom_etab, e.commune
FROM wp_inscrits i
LEFT JOIN wp_etabs_geolocalisation e ON i.uai = e.uai
WHERE (e.latitude IS NULL OR e.longitude IS NULL)
AND i.annee_scolaire = '2024-2025';
🎯 Étape 9 : Optimisations (optionnel)
Mise en cache
Pour améliorer les performances sur un site à fort trafic :
// Ajouter dans carte-inscriptions.php
public function ajax_get_inscriptions_map() {
$cache_key = 'carte_inscriptions_' . $annee_scolaire;
$cached_data = get_transient($cache_key);
if ($cached_data !== false) {
wp_send_json_success($cached_data);
return;
}
// ... code existant pour récupérer les données ...
// Mettre en cache pour 1 heure
set_transient($cache_key, $data, HOUR_IN_SECONDS);
wp_send_json_success($data);
}
Invalidation du cache
Ajouter un hook pour vider le cache quand une inscription est créée :
add_action('inscription_created', function($annee_scolaire) {
delete_transient('carte_inscriptions_' . $annee_scolaire);
});
🚀 Utilisation avancée
Afficher plusieurs années
Créer plusieurs pages avec des années différentes :
[carte_inscriptions annee="2024-2025" height="600px"]
[carte_inscriptions annee="2023-2024" height="600px"]
Carte par région
<!-- Île-de-France -->
[carte_inscriptions zoom="9" center_lat="48.8566" center_lng="2.3522"]
<!-- Auvergne-Rhône-Alpes -->
[carte_inscriptions zoom="8" center_lat="45.764043" center_lng="4.835659"]
Intégration dans un widget
Le shortcode fonctionne aussi dans les widgets WordPress :
- Aller dans Apparence → Widgets
- Ajouter un widget Texte personnalisé
- Coller le shortcode
[carte_inscriptions height="400px"]
📱 Responsive
La carte est automatiquement responsive et s’adapte aux mobiles.
Tailles par défaut :
- Desktop : 600px de hauteur
- Tablette : 400px de hauteur
- Mobile : 350px de hauteur
✨ Personnalisation des couleurs
Pour changer les couleurs des marqueurs, modifier dans carte-script.js :
var iconColors = {
'yellow': '#FFD700', // CM1 - modifier ici
'green': '#28a745', // CM2 - modifier ici
'violet': '#9B59B6' // 6e - modifier ici
};
🎓 Ressources
- Documentation Leaflet : https://leafletjs.com/reference.html
- Leaflet.markercluster : https://github.com/Leaflet/Leaflet.markercluster
- API Adresse : https://adresse.data.gouv.fr/api-doc/adresse
- OpenStreetMap : https://www.openstreetmap.org/
✅ Checklist finale
Avant de mettre en production :
- [ ] Extension activée
- [ ] Table
wp_etabs_geolocalisationavec colonneslatitudeetlongitude - [ ] Établissements géocodés (vérifier avec une requête SQL)
- [ ] Page créée avec le shortcode
- [ ] Carte affichée correctement
- [ ] Marqueurs colorés par niveau
- [ ] Popups fonctionnels
- [ ] Statistiques affichées
- [ ] Responsive testé sur mobile
- [ ] Performance acceptable (< 2 secondes de chargement)
🎉 Félicitations !
Votre carte interactive est maintenant opérationnelle !
Les utilisateurs peuvent visualiser toutes les classes inscrites, filtrer par année scolaire, et découvrir la répartition géographique du concours Eurêkamaths.